跳至内容
免费开始
返回博客

网络爬虫最佳免费代理列表排名(2026)

Robert Munceanu最后更新于 5 min read
网络爬虫最佳免费代理列表排名(2026)

开始提取

免费试用 WebScrapingAPI

领取 1,000 个免费 API 积分。无需信用卡。

开始使用
简而言之:最适合网页抓取的免费代理列表是:用于脚本的 ProxyScrape 列表、注重在线率和 ASN 筛选的 Geonode 列表,以及 GitHub 上适合纯文本管道输入的 monosans/proxy-list。请把每个列表都视为候选池,因为在任何一天只有一小部分列出的代理可用;切勿通过免费代理发送登录信息或访问支付页面。

无论你是使用代理爬虫还是简短的 Python 脚本,免费代理列表都是大多数爬虫的起点。以下是值得访问的免费代理网站列表(按排名排序),其中列出了每个网站适合的爬取任务,并明确标注了何时免费代理不再值得你花时间。请做好心理准备,大多数条目都会失败。 根据一项针对免费代理服务长达30个月的研究,在任何一天,列表中只有一小部分代理是可用的。请将每份列表视为候选池,而非一组可用的代理。已经准备好付费了吗?我们的《网页爬虫代理选择指南》会根据任务类型和成本对付费服务商进行对比。

按任务分类的最佳免费代理列表

  • 脚本应用的最佳综合免费列表:ProxyScrape 的免费代理列表
  • 最适合质量筛选(在线时间、ASN):Geonode 的免费代理列表
  • 最适合管道处理的纯文本源:GitHub 上的 monosans/proxy-list
  • 最适合快速手动挑选:Free Proxy List
  • 最佳由已知运营商提供的免费套餐:Webshare 的免费套餐
  • 不适用于:登录页面、支付页面,或任何您不希望陌生人查看的内容

我们如何对这些免费代理列表进行排名?

我们根据各免费代理网站公开的信息对其进行排名:包括代理检查的频率、是否无需注册即可通过纯文本、JSON 或 API 方式获取列表、每个条目包含的数据量,以及过期检查、CDN 地址或需付费才能导出等警示信号。 我们并未通过列表中的代理转发流量。

我们根据以下五项标准对每个网站的主页进行了评分:

标准

加分项

扣分项

内容新鲜度

明确标注以分钟为单位的重新检查间隔,且每行均显示可见的“最后检查时间”

每日更新,或检查时间已过去数小时

无需注册即可导出

纯文本、JSON、CSV 或 API 链接,免费且无需注册

仅支持复制粘贴、脚本渲染的端口,或需付费的导出功能

每条记录的数据

协议、匿名性、HTTPS支持、在线时间、延迟、网络所有者(ASN)

仅限 IP 和端口

列表质量

在预期端口上看起来像真实代理的行

过期记录,或被列为代理的CDN地址

运营商透明度

明确标注的运营商、声明的验证方法、无安装程序

广告泛滥的页面、VPN 诱导页面或需下载才能运行的页面

两项决胜标准解决了难分高下的情况。经过过滤且可机读的数据源优于网页表格,而在为期30个月的研究中持续追踪的列表则略占优势。这仅意味着研究人员认为其值得收集数据,并不代表其安全可靠。

所有列表均采用相同的标签。精英代理既能隐藏您的 IP 地址,又能隐藏您正在使用代理的事实。匿名代理虽能隐藏您的 IP 地址,但会通过请求头暴露自身身份。透明代理则会直接传递您的真实 IP 地址,因此无法用于数据抓取。 HTTP 代理转发普通网页请求,支持 HTTPS 的代理可以建立加密隧道,而 SOCKS4 和 SOCKS5 代理则可为几乎任何客户端中继原始连接。MDN 解释了代理服务器和隧道的工作原理,我们关于爬虫代理类型的概述涵盖了 HTTP、SOCKS5、住宅代理和数据中心代理。

免费代理列表每小时都在变化,因此请将下文中的每条信息视为某个时间点的快照。关于各网站的任何声明均来自该网站自身。

哪些是用于网页抓取的最佳免费代理列表?

最适合网络爬虫的免费代理列表包括:ProxyScrape 提供的经过过滤的 API 源列表、Geonode 提供的带在线状态和 ASN 过滤功能的列表、GitHub 上的 monosans/proxy-list(每小时更新一次的纯文本文件),以及 Free Proxy List(便于快速手动筛选)。 每个免费列表仍需进行测试,因为大多数条目在任何特定日子都可能失效。

#

免费代理列表

格式

刷新网站状态

免费导出

最适合

1

ProxyScrape 免费列表

网页表格 + 免费 API + GitHub 镜像

每分钟

TXT、JSON、CSV、API

适用于脚本的过滤数据源

2

Geonode 免费列表

网页表格 + URL 加载器

每分钟刷新一次(页面也曾显示约23分钟)

下载、URL

按运行时间和ASN过滤

3

monosans/proxy-list

GitHub文件

每小时

TXT、JSON

管道和持续集成

4

免费代理列表

网页表格 + 原始列表

每10分钟

原始列表

快速手动筛选

5

Proxifly 免费代理列表

GitHub 文件 + npm

每5分钟

TXT、JSON

按协议划分的流量

6

Spys.one

Web表格 + 文本列表

“实时”

文本列表

国家与匿名浏览

7

ProxyNova

网页表格

每60秒(多数测试为每15分钟)

无

各国网速与在线率

8

ProxyDB

网页表格

未说明

无

运行时间历史记录

9

hide.mn

Web 表格

未说明

仅限付费用户

浏览器中的匿名过滤器

10

FreeProxy.World

网页表格

未说明

无

IP地址交叉核对

1. ProxyScrape 免费代理列表

最适合:需要按计划获取过滤后列表的脚本。

为何位列此处:该网站称列表每分钟更新一次,并由自动化检测工具验证,涵盖 HTTP、HTTPS、SOCKS4 和 SOCKS5 协议。 您可以按协议、匿名性、国家/地区和延迟进行筛选,随后导出 TXT、JSON 或 CSV 格式文件,调用免费的公共 API,或从 GitHub 镜像中获取数据。 在为期 30 个月的研究中,ProxyScrape 是两大独特代理来源之一,也是初次测试中可用代理数量最多的两个来源之一。

限制:页面上的规模和国家数据会不断变化。该表格通过 JavaScript 加载,因此请使用 API 代替抓取页面。

风险提示:与本站所有列表一样,该列表汇总了来自公开来源的开放代理。ProxyScrape 还销售付费代理,并在页面上进行推广。是否考虑用其他方案替代其付费套餐?请参阅如何选择 ProxyScrape 的替代方案。

2. Geonode 免费代理列表

最适合:根据质量指标筛选代理。

上榜原因:Geonode 发布的每条记录数据最为详尽:协议、匿名性、在线率、最后检查时间、速度、延迟、“通过 Google 测试”标记,以及以 ORG 和 ASN 形式标注的网络所有者。 您可以按在线时间区间进行筛选并查看数据新鲜度,然后通过 URL 加载筛选后的列表,而无需手动复制行。其数据行也显得非常干净。Geonode 是 2023 年为期 30 个月的研究中纳入的提供商之一。

限制:页面标题显示列表每分钟更新一次,但同一页面也曾显示过“最后更新 23 分钟前”的标头。请将新鲜度标签视为近似值。

风险提示:Geonode 是一家商业供应商,其免费列表与付费住宅代理服务并列展示。ASN 列是您的最佳防护手段:剔除来自意外网络的条目,例如位于托管服务商上的“住宅”代理。

3. monosans/proxy-list (GitHub)

最适合:需要纯文本文件的持续集成(CI)任务和管道。

排名理由:README 说明中指出,代理必须完整加载真实 URL 才能被收录,且列表每小时都会重新验证。 它以纯文本和 JSON 格式发布 HTTP、SOCKS4 及 SOCKS5 代理,按速度从快到慢排序,并为每个条目提供响应时间、出口 IP、ASN 及地理位置信息。无需注册,也不需要 API 密钥,该项目采用 MIT 许可证。

局限性:每小时更新一次的速度慢于上述分钟级列表。该项目由一名开发者维护,因此若更新停止,则无法保证服务持续性。

风险提示:请仅通过 HTTPS 获取纯文本或 JSON 文件。切勿运行来自未仔细阅读过的代理仓库的代码。

4. 免费代理列表 (free-proxy-list.net)

最适合:用于一次性测试的快速手动筛选。

排名原因:该网站称其免费代理“每 10 分钟检查并更新一次”,每行数据均显示匿名性、HTTPS 支持情况、Google 标记以及最后检查时间。 原始列表允许您一次性复制所有内容。这些条目看起来像是正常端口上的真实代理,且“免费代理列表”在为期 30 个月的研究期间始终处于研究提供的服务商集合中。

局限性:该列表严重偏向HTTP。其应用程序或API下载与付费的“代理列表”产品捆绑,因此与上述数据源相比,自动化处理更为繁琐。

风险提示:该网站的菜单会主动推广付费代理及其他工具。请仅使用表格和原始列表,其余内容请忽略。

5. Proxifly free-proxy-list(GitHub)

最适合:按协议(HTTP、HTTPS、SOCKS4、SOCKS5)分类的大容量文件。

排名理由:README 文件说明该项目每 5 分钟抓取并验证一次代理,并按协议和国家将其拆分为单独的文件,因此您可以仅获取 SOCKS5 代理等。它还提供了一个用于 Node.js 项目的 npm 模块。

限制:README 中列出的“有效”代理数量远高于研究中发现的典型日活跃数量,因此该数字应理解为已收集的代理数量,而非实际可用的代理数量。

风险提示:该代码采用 GPL-3.0 许可证。在将 npm 模块打包到商业产品中之前,请仔细阅读许可证条款,并且务必仅通过 HTTPS 获取数据文件。

6. Spys.one

最适合:按国家、端口和匿名性进行浏览。

排名理由:Spys.one 拥有所有免费列表中最详尽的筛选条件。 您可以仅显示精英级、匿名或透明代理,按国家/地区和端口进行筛选,并在每行查看在线时间和检测日期。该页面显示了服务器更新时间,称其列表为“实时更新”,并提供纯文本版本。

局限性:端口信息由脚本生成,因此该页面难以实现自动化操作,且界面设计陈旧、信息密集。

风险提示:Spys.one 提供了一份专门针对 MikroTik 路由器的开放代理列表。 一项为期30个月的研究发现,数万个代理IP上运行着MikroTik软件,其中许多很可能是被劫持的路由器。让您的爬虫通过他人的受感染路由器进行路由,不仅涉及速度或可靠性问题,更是一个道德问题。请完全跳过该列表。

7. ProxyNova

最适合:在手动测试前按国家/地区检查速度和在线时间。

排名理由:页面显示该列表每 60 秒更新一次,且大多数代理至少每 15 分钟测试一次。每行显示速度、在线时间、匿名性、国家/地区以及最后一次检测时间。

局限性:IP 地址由脚本生成且无法导出,因此需要手动复制。许多可见的行中在线率百分比较低。

风险提示:ProxyNova 是一个通用工具网站。请忽略与代理无关的下载内容。

8. ProxyDB

最适合:查看平均在线率和响应时间历史数据。

排名理由:ProxyDB 提供了针对 HTTP、HTTPS、SOCKS5、匿名性和国家/地区的清晰筛选条件。其列显示的是平均在线时间和平均响应时间,而非单一快照数据,这有助于您识别已持续在线一段时间的代理。

局限性:大多数可见的“已检查”时间已过去数小时之久。除非您亲自重新测试每个条目,否则这些数据对于数据抓取而言过于陈旧。

风险提示:这是一家规模较小的运营商,且未明确说明检测方法,因此无法确定此处的“已检查”具体指什么。

9. hide.mn(原名 hidemy.name)

最适合:在浏览器中按匿名级别进行筛选。

排名理由:该网站称会检测代理的 ping 值、类型、国家、连接速度、匿名性和在线时间,其筛选功能可轻松仅显示您所需的匿名级别。在为期 30 个月的研究中,该服务商曾以其旧名称 HideMyName 列入服务商名单。

限制:该网站称导出 IP:Port 数据及访问 API 需付费订阅,因此免费版本仅提供网页表格。可见的免费行中,很大一部分位于 Cloudflare 公布的 IP 范围内,且大多位于常见的 Web 端口上。这些地址不太可能是真正的开放代理。

风险提示:该企业主营VPN业务,其免费列表实际上是引导用户使用VPN的引流渠道。hidemy.name 目前已重定向至 hide.mn。

10. FreeProxy.World

最适合:在交叉核对 IP 时作为第二参考。

排名原因:该服务提供按类型、匿名性、速度和端口进行的广泛筛选功能,并声称拥有庞大的代理数量。

局限性:可见条目中很大一部分是 Cloudflare 范围内的 80 端口地址,这些地址不太可能是真正的开放代理,导致该列表的质量在本次评估中垫底。

风险提示:表格旁边有VPN促销和“高级访问”广告。请勿点击。

我们未纳入的列表。Open Proxy Space 无法访问,而几个曾经很受欢迎的列表现在要么重定向到无关网站,要么无法加载。GitHub 上的 TheSpeedX/PROXY-List 每天更新,其维护者表示他们并不负责这些代理的管理。该列表适合练习,但对于实际工作而言过于陈旧。

您应该为数据抓取任务选用哪份免费代理列表?

根据任务需求选择列表。 当脚本需要按计划获取最新代理时,请使用 GitHub 文本源或 ProxyScrape 的 API;若需国家筛选或匿名性过滤,请选用 Geonode 或 Spys.one;而对于一次性手动测试,则可使用 Free Proxy List。对于需要登录、周期性任务或难以抓取的目标,没有任何免费列表能胜任。

任务

最佳选择

次优选择

原因

在每次运行前刷新代理的脚本

ProxyScrape 免费列表(API)

monosans/proxy-list

机器可读、可筛选、频繁刷新

针对特定国家的测试

Geonode

Spys.one

国家过滤器,兼具在线时间和更新时效性

为有需要的客户端提供SOCKS5支持

Proxifly

Geonode

按协议划分的文件和过滤器

对一个公开网页进行快速手动检查

免费代理列表

ProxyNova

HTTPS 和“最后检查时间”列一目了然

在代码中学习代理设置

Webshare 免费套餐

任意列表 + 下方的检测工具

稳定的 IP 地址,因此失败原因在于您的代码,而非代理

无需代理配置即可测试真实目标

爬虫 API

—

代理、重试和渲染均由系统自动处理

登录、支付、定期生产任务

无免费列表

—

请付费使用(参见最后一节)

Playwright 和 Puppeteer 等无头浏览器会使情况更加复杂。大多数免费代理不支持身份验证或稳定的会话,因此您无法长期将一个浏览器上下文绑定到一个 IP 地址上。 单次页面加载还会衍生出数十个针对脚本、图片和字体的请求,且均通过同一代理。如果其中任何一个请求卡住,页面就会崩溃,因此失败率会成倍增加,而非相互抵消。

除了代理列表外,还有哪些值得一试的免费代理方案?

有的,如果你希望在不付费的情况下仍能确保可靠性。 Webshare 的免费套餐提供 10 个共享代理和 1 GB 的月带宽,无需信用卡;而我们自家的 Scraper API 试用版包含 5,000 次免费请求,并由平台为您自动处理代理连接。两者都需要注册账户,但您将获得可追溯的运营商支持,而非匿名陌生人。

Webshare 免费套餐。其定价页面显示,免费套餐包含 10 个共享代理和 1 GB 的月流量,支持 HTTP 和 SOCKS5 协议,无时间限制,且无需信用卡。 该方案最适合学习和轻量级任务,因为一旦出现故障,问题出在您的代码上,而非代理失效。其限制很快就会显现:10 个 IP 和 1 GB 的配额非常有限,而且这些代理需与其他用户共享。

WebScrapingAPI 爬虫 API 免费试用。这是我们自己的服务,试用版包含 5,000 次免费请求。 您只需提供一个 URL,Scraper API 便会自动处理代理选择、重试以及可选的 JavaScript 渲染,随后返回页面。JavaScript 渲染和地理定位不会额外消耗积分,失败的请求也不会被计费。在构建任何代理基础设施之前,可利用它来测试真实目标。

我们未对付费提供商的短期试用或演示版本进行排名,因为它们并非免费代理网站。“免费轮换代理”服务几乎总是试用性质,因为轮换需要维护一个可用的IP池,而运营成本是不可避免的。如果您想了解具体机制,这里介绍了IP轮换在数据抓取中的工作原理。

免费列表中的代理有多少是真正可用的?

只有极小一部分。 一项为期 30 个月的学术研究对来自 11 个列表网站的超过 64 万个免费代理进行了调查,结果发现:在任意一天,通过验证的代理平均仅占 3.4% 左右;而支持 HTTPS 的代理,其数量仅占通过 HTTP 响应的代理总数的 2.5% 左右。 请做好剔除列表中大部分条目的准备。

这项为期30个月的研究每天都会收集并测试免费代理,其结果并非完全令人沮丧。在至少成功连接过一次的代理中,约有30.8%在超过100天的时间内保持活跃,因此部分免费代理确实能长期使用。只是你无法提前判断哪些代理能用。

各列表之间的重叠程度也远超其声称的数量所示。 在一项针对开放式 HTTP 代理的大规模分析中,从列表网站收集的 144,349 条记录,最终仅对应 65,871 个独立代理。各网站往往从相同的公开来源复制数据,因此主页上显示的数字越大,并不意味着可用的代理越多。

这就是为什么排名体系如此重视“新鲜度”和“质量”的原因。一个经常重新核查并过滤垃圾条目的列表,可以帮你省去测试无效条目的麻烦,但它无法改变某一天可用代理数量本就稀少这一事实。

使用免费代理进行网页抓取安全吗?

对于任何敏感操作都不安全。免费代理的运营商可以读取并篡改未加密的流量,记录您的请求内容,并注入广告或脚本;而且许多免费代理运行在被劫持的路由器上。请仅将其用于公开的、非敏感页面,保持证书验证功能开启,并且切勿通过它们发送登录凭据、Cookie 或 API 密钥。

代理位于每次请求的中间位置,这正是“中间人攻击”的理想位置。在明文 HTTP 协议下,代理可以看到并可以重写完整的请求和响应。 对于 HTTPS,行为规范的代理会使用 HTTP CONNECT 方法打开隧道,并仅中继加密后的数据。只要您的客户端验证了证书,代理就能看到您访问的是哪个主机,但无法看到页面本身的内容。

研究结果印证了这一点。NDSS的研究发现,在测试的代理中,约38%以某种方式篡改了内容,其中5.15%是出于恶意目的。在这些恶意代理中,47%插入了广告,39%插入了跟踪或指纹识别代码,12%将用户重定向至恶意软件页面。 这项为期30个月的研究发现,平均而言,每次运行时有5.7%的活跃代理返回了被篡改的内容,此外,代理背后的服务器还存在数千个已知漏洞。

风险

会发生什么

如何识别

无效或过期条目

连接被拒绝或超时

检测工具判定为“失效”

IP泄露(透明代理)

网站仍能看到您的真实IP

“leaks_ip”判定结果

仅支持HTTP的代理

不支持 CONNECT,因此 HTTPS 连接失败

“http_only”评估结果

内容篡改

注入了广告、追踪器或重定向

判定为“tampered”

共享或被滥用的 IP

被封锁、出现验证码或403错误

尽管显示“可用”,但目标端仍出现失败

主机遭入侵

流量经由被劫持的设备传输

无法从外部验证;请避免传输敏感流量

切勿通过免费代理发送以下内容:

  • 登录名和密码
  • 会话 Cookie
  • API密钥或令牌
  • 支付数据
  • 您本人或他人的个人数据

切勿 verify=False 通过代理来“修复”证书错误,也绝不要运行列表网站提供的“检测工具”可执行文件或浏览器扩展。这还涉及法律和道德层面:某些免费代理运行在设备上,而这些设备的所有者从未同意中转您的流量。

如何使用 Python 测试免费代理列表?

通过每个代理向 httpbin.org 等测试端点发送几个小请求。检查是否能连接、网站看到的是哪个 IP 地址、它添加了哪些请求头、能否打开 HTTPS 隧道,以及返回的已知页面是否保持原样。仅保留通过所有检查的代理,并在每次运行前重新测试。

设置一个虚拟环境,并安装支持 SOCKS 的 Requests 库:

python -m venv .venv && source .venv/bin/activate
pip install "requests[socks]"

将此脚本保存为 free_proxy_check.py:

#!/usr/bin/env python3
"""Check a free proxy list for dead, leaky, HTTP-only, and tampering proxies."""
import csv
import hashlib
import os
import sys
import time
from concurrent.futures import ThreadPoolExecutor

import requests

BASE = os.environ.get("CHECK_BASE", "http://httpbin.org")
HTTPS_URL = os.environ.get("CHECK_HTTPS_URL", "https://httpbin.org/ip")
TIMEOUT = float(os.environ.get("CHECK_TIMEOUT", "8"))
WORKERS = int(os.environ.get("CHECK_WORKERS", "20"))
PROXY_HEADERS = {"via", "x-forwarded-for", "forwarded", "x-real-ip", "client-ip"}


def new_session(proxy=None):
    s = requests.Session()
    s.trust_env = False  # ignore HTTP(S)_PROXY / NO_PROXY from the shell
    if proxy:
        s.proxies = {"http": proxy, "https": proxy}
    return s


def baseline():
    """What the test server sees with no proxy: our IP and the true page hash."""
    s = new_session()
    my_ip = os.environ.get("CHECK_REAL_IP") or s.get(f"{BASE}/ip", timeout=TIMEOUT).json()["origin"]
    page = s.get(f"{BASE}/html", timeout=TIMEOUT).content
    return my_ip, hashlib.sha256(page).hexdigest()


def check(proxy, my_ip, page_hash):
    row = {"proxy": proxy, "verdict": "dead", "exit_ip": "", "latency_ms": "",
           "https": False, "proxy_headers": "", "tampered": False, "error": ""}
    s = new_session(proxy)
    try:
        start = time.perf_counter()
        r = s.get(f"{BASE}/ip", timeout=TIMEOUT)
        r.raise_for_status()
        row["latency_ms"] = round((time.perf_counter() - start) * 1000)
        row["exit_ip"] = r.json()["origin"]

        seen = s.get(f"{BASE}/headers?show_env=1", timeout=TIMEOUT).json()["headers"]
        added = {k: v for k, v in seen.items() if k.lower() in PROXY_HEADERS}
        row["proxy_headers"] = ";".join(f"{k}={v}" for k, v in added.items())
        leaks_ip = my_ip in row["exit_ip"] or any(my_ip in v for v in added.values())
        # httpbin.org's own load balancer adds one X-Forwarded-For hop; more means the proxy added one
        hops = added.get("X-Forwarded-For", "").count(",") + 1 if "X-Forwarded-For" in added else 0
        reveals = "Via" in added or "Forwarded" in added or hops > 1

        page = s.get(f"{BASE}/html", timeout=TIMEOUT).content
        row["tampered"] = hashlib.sha256(page).hexdigest() != page_hash
    except (requests.RequestException, ValueError, KeyError) as exc:
        row["error"] = type(exc).__name__
        return row

    try:
        row["https"] = s.get(HTTPS_URL, timeout=TIMEOUT).ok
    except requests.RequestException:
        row["https"] = False

    if row["tampered"]:
        row["verdict"] = "tampered"
    elif leaks_ip:
        row["verdict"] = "leaks_ip"
    elif not row["https"]:
        row["verdict"] = "http_only"
    elif reveals:
        row["verdict"] = "reveals_proxy"
    else:
        row["verdict"] = "usable"
    return row


def main(path):
    with open(path) as f:
        proxies = [line.strip() for line in f if line.strip() and not line.startswith("#")]
    proxies = [p if "://" in p else f"http://{p}" for p in proxies]
    my_ip, page_hash = baseline()

    with ThreadPoolExecutor(max_workers=WORKERS) as pool:
        rows = list(pool.map(lambda p: check(p, my_ip, page_hash), proxies))

    writer = csv.DictWriter(sys.stdout, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)
    usable = sum(r["verdict"] == "usable" for r in rows)
    print(f"{usable}/{len(rows)} proxies usable", file=sys.stderr)


if __name__ == "__main__":
    main(sys.argv[1] if len(sys.argv) > 1 else "proxies.txt")

该脚本会对每个代理依次执行五项检查:

  1. 连接与延迟。它通过代理请求 /ip 通过代理发送请求并测量往返时间。若连接被拒绝或超时,则视为无效。
  2. 源IP检测。该步骤将 httpbin.org 检测到的 IP 地址与通过直接请求获取的真实 IP 地址进行比对。若检测到您的真实 IP,则说明该代理存在 IP 泄露。
  3. 添加的头部。该步骤检查代理添加的头部,例如 Via、X-Forwarded-For 头部以及标准的 Forwarded 头部。这些头部表明路径中存在代理,有时还会携带您的真实 IP。
  4. 页面完整性。该功能将 httpbin.org 通过代理获取的页面的 SHA-256 哈希值 /html 页面通过代理获取的 SHA-256 哈希值与直接获取的哈希值进行比对。若存在差异,则表明代理修改了页面内容。
  5. 通过 CONNECT 请求 HTTPS。它通过代理请求一个 HTTPS URL。如果隧道建立失败,则该代理仅支持普通 HTTP。

将候选地址写入文本文件,每行一个。未带方案的 host:port 条目将被视为 HTTP,您可为 SOCKS 协议添加协议前缀。下方的地址是预留的文档 IP,请将其替换为您列表中的条目:

# one proxy per line; bare host:port means HTTP
203.0.113.10:8080
http://198.51.100.24:3128
socks5h://192.0.2.55:1080

然后运行检测程序:

python free_proxy_check.py proxies.txt > results.csv

该脚本会为每个代理写入一行 CSV 数据到 results.csv ,并输出可用代理的数量。免费代理速度较慢,因此如果正常工作的代理频繁超时,请通过 CHECK_TIMEOUT 环境变量(单位为秒)来延长超时时间。

结论

含义

保留吗?

可用

已连接,无 IP 泄露,HTTPS 隧道正常,页面未改变

是的,适用于非敏感的公共页面;每次运行前需重新测试

reveals_proxy

有效,但会添加 Via 或 Forwarded 头部

仅在这些情况不影响使用时

http_only

在 HTTP 上有效,但无法隧道传输 HTTPS

不

leaks_ip

会将您的真实 IP 地址传递给网站

否

篡改

返回了经过修改的页面

不,并且停止使用提供该页面的列表

已失效

被拒绝、超时或出错

否

脚本中有两个设置很重要。使用 socks5h:// 代替 socks5:// 会使代理解析主机名,从而避免在您自己的网络上进行 DNS 查询。设置 trust_env = False 可阻止 Requests 从您的 shell 获取代理设置,从而确保每次检查都仅通过待测代理进行。Requests 代理文档中对此进行了详细说明。

向检测器提供上述任何列表的纯文本导出文件,例如 ProxyScrape 的 API、Geonode 的 URL 加载器,或 GitHub 上的文本文件之一。对于 ping、curl、IP 信誉数据库和匿名级别,请参考我们的《测试代理的六种实用方法》。 初次接触 Requests 中的代理功能?请参阅如何在 Python Requests 中配置代理,包括身份验证和 SOCKS5。当代理因 407、502 错误或 CONNECT 请求被拒而失败时,请先查阅代理状态错误信息,切勿贸然归咎于目标服务器。

何时该停止使用免费代理而转用付费代理?

当维护免费代理列表的成本高于付费套餐时,就该考虑付费了。明确的信号包括:需要定期执行任务、成功率难以预测、需要 HTTPS 或特定国家的代理、频繁登录,以及耗费大量时间重新检查代理。 针对难以访问或本地目标,请选择住宅代理;针对容错性较高的网站,请选择数据中心代理;若想省去代理维护工作,可选用爬虫API。

情况

适用场景

原因

学习、一次性抓取公共页面

通过检测器的免费代理

零成本;即使失败也代价低廉

在允许数据中心IP的网站上执行定期任务

数据中心代理

使用自有客户端可获得可预测的吞吐量

本地或普通用户IP、国家定向、粘性会话

住宅代理

更高的可信度与位置控制

遭遇封锁、页面包含大量JavaScript,或无暇维护代理

爬取 API(Scraper API)

通过单次请求实现代理、重试和页面渲染

免费代理是学习的好方法。你可以了解代理设置的运作原理,以及为何列表中标注的“匿名”并不总是意味着真正匿名。但免费列表其实并不免费。 你需要付出时间去获取和测试代理,重跑中途失败的任务,并确认数据是否完好无损。一旦这些时间所耗费的价值超过了一个基础套餐的费用,那么“免费”反而成了昂贵的选择。

仍然想要一份列表,只是希望它更可靠?了解付费代理列表的定价和选择方法。对于消费者 IP 和城市定向,请比较最佳的轮换住宅代理提供商。对于在容错性较高的网站上进行的大量任务,请权衡共享代理与专用数据中心代理的优劣。

WebScrapingAPI 提供三种付费选项,与上表对应:

  • 住宅代理。住宅代理默认采用轮换模式,可保持长达 10 分钟的粘性会话,并支持 HTTP、HTTPS 或 SOCKS5 协议。
  • 数据中心代理。若需在支持数据中心流量的目标网站上实现高吞吐量,请配合自有客户端使用数据中心代理。定价需根据您的流量规模单独报价。
  • Scraper API。或者省去代理维护的麻烦:Scraper API 只需提供 URL,即可自动处理代理、重试以及可选的 JavaScript 渲染。JavaScript 渲染和地理定位不额外消耗积分,且失败的请求不会计费。

以下是测试工具通过 Scraper API(使用美国出口节点)发送的同一 httpbin.org/ip 检查请求。请先在 WSA_API_KEY 环境变量中:

import os

import requests

params = {
    "api_key": os.environ["WSA_API_KEY"],
    "url": "https://httpbin.org/ip",
    "country": "us",
}
r = requests.get("https://api.webscrapingapi.com/v2", params=params, timeout=60)
print(r.status_code, r.text[:200])

常见问题

哪个是网络爬虫的最佳免费代理网站?

这取决于具体任务。ProxyScrape 的免费代理列表是脚本应用中最全能的选择,它提供过滤功能和免费 API。Geonode 提供了在线率和网络数据,而 GitHub 上的代理源(如 monosans/proxy-list)最易于自动化处理。由于没有哪个代理列表可靠到足以用于生产环境,因此请务必先测试每个代理。

使用免费代理列表安全吗?

仅适用于公开且不涉及敏感信息的请求。免费代理的运营商可能会记录您的流量,并篡改通过明文 HTTP 传输的任何内容;研究还发现,数千个免费代理存在注入内容的行为。请保持证书验证功能开启,优先选择 HTTPS 目标,切勿发送登录凭据或 API 密钥,并在爬虫依赖某个代理之前务必对其进行测试。

列表中的免费代理有多少个真正有效?

通常只有极少数。一项为期 30 个月、针对超过 64 万个免费代理的学术研究显示,在任意一天,通过验证的代理平均仅占 3.4% 左右。结果因列表和时间段而异,因此请在使用前测试每个代理,并做好淘汰大部分条目的准备。

哪些免费代理列表提供 API 或纯文本下载?

ProxyScrape 提供免费的公共 API 以及 TXT、JSON 和 CSV 导出功能;Geonode 则允许您通过 URL 加载经过筛选的列表。GitHub 上的项目(如 monosans/proxy-list 和 Proxifly)会发布可直接获取的纯文本文件。 Hide.mn 的导出和 API 功能需付费订阅才能使用。请务必通过 HTTPS 获取数据源。

我应该多久刷新一次免费代理列表?

请在每次运行前立即刷新。有些免费代理可使用数月,但许多会在几天内失效,且无法提前判断具体情况。即使每分钟重新检查一次的列表,也无法预知代理对目标的响应情况,因此请立即获取、测试并使用仍可用的代理。

有免费的 HTTPS 代理吗?

确实存在,但非常罕见。在一项为期 30 个月的研究中,支持 HTTPS 的代理数量平均仅占通过 HTTP 响应的代理总数的 2.5% 左右。支持 HTTPS 的代理支持 CONNECT 方法,该方法可对加密流量进行端到端隧道传输。 请直接进行测试,因为列表中标注为“HTTPS”的标签往往有误或已过时。

有免费的住宅或数据中心代理吗?

从可靠性角度来看,并不存在。免费列表中混杂着托管服务器和家用设备,许多看似住宅IP的地址其实是被劫持的路由器,其所有者从未同意过共享这些IP。少数提供商提供小规模的免费套餐,例如 Webshare 的 10 个共享代理,但大规模、可靠且来源合规的住宅 IP 需要付费。

有免费的轮换代理 API 吗?

大多数“免费轮换代理”服务其实是付费产品的试用版或小额免费套餐,而非永久免费的IP池。轮换功能需要维护一个可正常使用的IP池,而运营成本是不可避免的。如果您需要为周期性任务启用轮换功能,请预留预算购买付费代理套餐或使用能自动轮换的爬虫API。

用于爬虫的免费代理和付费代理有什么区别?

付费代理具备可追溯性:有明确的运营商、身份验证、HTTPS 支持、地理位置定位,且有人负责修复失效的 IP。免费代理则是匿名的、共享的且无人维护。免费代理可用于学习。对于周期性任务,付费代理的成本通常低于因重新测试和重跑失败的爬取任务而浪费的时间。

使用免费代理进行网页抓取是否合法?

在大多数地区,使用公共代理并不违法,但部分免费代理运行在未经所有者同意就被入侵的设备上,通过这些设备路由流量会引发法律和道德问题。数据抓取本身的合法性取决于您收集的内容及来源。本文不构成法律建议,请查阅当地法规。

准备好告别手动维护代理列表了吗?

免费代理列表虽是学习的良好途径,却无法作为您所依赖的数据的可靠基础。当您准备付费时,请比较住宅代理套餐(按需付费,起价为每 GB 8.50 美元),或根据您的流量需求申请数据中心代理报价。 如果您希望完全无需管理代理,Scraper API 套餐提供 5,000 次免费请求。JavaScript 渲染和地理定位无需额外消耗积分,且失败的请求不会计费。

关于作者

Robert Munceanu, 全栈开发工程师 @ WebScrapingAPI

Robert Munceanu

全栈开发工程师

罗伯特·蒙塞阿努(Robert Munceanu)是 WebScrapingAPI 的全栈开发工程师,他在产品各领域均有贡献,并协助构建了支持该平台的可靠工具和功能。

Nodriver Python 教程:隐身浏览器爬取——从第一个脚本到投入生产
网络爬虫技术

Nodriver Python 教程:隐身浏览器爬取——从第一个脚本到投入生产

TL;DR: 简而言之:Nodriver 是一个异步 Python 库,通过 Chrome DevTools Protocol 驱动 Chromium,无需 Selenium 或 chromedriver 二进制文件。当一个更接近真实 Chrome 会话的自托管隐身浏览器比 WebDriver 技术栈更合适时,请使用它;但要知道,它本身并不能消除 IP、TLS 或行为层面的风险。本教程从第一个脚本讲到容器化生产部署以及托管的 Browser API。

Suciu Dan5 min read
阅读文章
如何在搜索结果页面(SERP)抓取工具中处理 Google /goto 重定向 URL 和 CAES 令牌
网络爬虫技术

如何在搜索结果页面(SERP)抓取工具中处理 Google /goto 重定向 URL 和 CAES 令牌

TL;DR: Google 搜索会在搜索结果页面(SERP)中的结果与目标页面之间插入一个不透明的重定向。href 属性中可能不会直接显示 URL,而是显示包含 CAES 令牌的 google.com/goto——或者较旧的 /url 包装形式。了解如何在生产环境的 SERP 抓取工具中,无需解密 CAES 即可对这些重定向进行分类、去重和解析。

Suciu Dan4 min read
阅读文章
cURL 中的 HTTP 响应头:每个标记、技巧和脚本配方
网络爬虫技术

cURL 中的 HTTP 响应头:每个标记、技巧和脚本配方

TL;DR: 简要说明:cURL 默认隐藏响应头信息。使用 -i 可以看到响应头和正文,使用 -I 可以看到 HEAD 请求只返回响应头,使用 -v 可以看到完整的请求/响应调试,使用 -D 可以将响应头保存到文件中。对于现代脚本,cURL 7.83+ 允许提取单个头信息,或使用 -w write-out 选项将所有头信息转存为 JSON 格式。

Suciu Dan3 min read
阅读文章

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网络数据。