三款开源代理采集方案,各自解决链条上的不同环节
| 工具 | 核心能力 | 协议支持 | 适合场景 | 一句话结论 |
|---|---|---|---|---|
| ProxyBroker | 采集+验证一体化,异步并发 | HTTP / HTTPS / SOCKS4 / SOCKS5 | 本地快速跑一把、临时需要一批代理 | 命令行最省事,不用搭服务 |
| proxy_pool | 定时采集+持续验证+API输出 | HTTP / HTTPS | 部署到服务器长期运行、爬虫项目对接 | 最成熟的代理池方案,15个源稳定 |
| ProxyScrape | 免费API直接返回可用代理 | HTTP / HTTPS / SOCKS4 / SOCKS5 | 不想自己跑采集验证、直接调API拿结果 | 最省心,但免费版有频率限制 |
一、ProxyBroker:命令行一条指令,采集+验证一把梭
ProxyBroker是一个Python写的异步代理采集工具,它的核心思路是:从50多个公开代理源同时抓取IP列表,然后异步并发验证每个代理能不能用、支持什么协议、匿名度是什么级别。装完就能用的程度:一行命令搞定。pip install proxybroker
proxybroker find --types HTTP HTTPS --lvl High --countries US --strict -l 20· 异步并发验证 —— 不是一条一条顺序检测,而是同时发起几百个验证请求。2000条原始IP里筛出可用的,传统同步方式可能要跑半小时,ProxyBroker几分钟搞定。
· 内置匿名度检测 —— 验证时不是简单地ping一下看通不通,而是实际发一个HTTP请求到一个检测服务器,看返回的HTTP头部里有没有透传真实IP。能自动区分透明(Transparent)、普匿(Anonymous)、高匿(High)三个级别。
· 支持本地代理服务器模式 —— 可以把采集到的代理池变成一个本地代理服务器,你的爬虫请求发给本地的ProxyBroker,它自动从池子里选一个代理转发出去。不用改爬虫代码,改个代理地址就行。
⚠ 一个容易踩的坑
ProxyBroker默认采集的是全球代理,如果你需要国内代理或者特定国家的IP,一定要加 --countries CN 参数。不加的话默认扫全球,出来的IP延迟可能几百毫秒,在国内用起来体验很差。
二、proxy_pool:部署到服务器上,定时采集持续维护
ProxyBroker适合临时用一下,但如果你有一个长期运行的爬虫项目,每次需要代理都重新跑一遍ProxyBroker就太浪费了。这时候需要的是一个"持续运行的代理池服务"——定时自动采集、定时自动验证淘汰失效IP、通过API接口随时取用。proxy_pool(GitHub上jhao104那个,Star 20k+)是目前国内最成熟的免费代理池方案。proxy_pool的核心架构(四个模块分工)
| 模块 | 职责 | 运行频率 |
|---|---|---|
| Getter(采集器) | 从15+免费代理源抓取原始IP列表 | 可配,默认每20分钟 |
| Tester(验证器) | 多线程验证代理可用性,淘汰失效IP | 可配,默认每1小时 |
| Server(API服务) | 通过RESTful API提供代理获取接口 | 持续运行 |
| Schedule(调度器) | 协调Getter和Tester的定时执行 | 按配置触发 |
git clone https://github.com/jhao104/proxy_pool.git
cd proxy_pool
pip install -r requirements.txt
# 修改 setting.py 中的配置(数据库地址、采集频率等)
python proxyPool.py schedule # 启动调度器
python proxyPool.py server # 启动API服务# 随机获取一个HTTPS代理
GET http://127.0.0.1:5010/get/?type=https
# 返回: {"proxy": "192.168.1.100:8888"}
# 获取多个
GET http://127.0.0.1:5010/get_all/?type=https
# 获取代理池状态(总数、可用数)
GET http://127.0.0.1:5010/get_status/⚠ proxy_pool的两个关键设置
1. 数据库选Redis —— 默认支持Redis和SSDB,不要用SSDB,直接用Redis。Redis的过期时间机制天然适合代理IP的场景(一个IP有效期过了自动删除),SSDB没有这个能力。
2. 验证URL要换成你自己的目标站 —— setting.py里默认用百度验证,但如果你爬的是海外网站,换成一个目标站的URL验证才准。代理对A网站可用不一定对B网站可用。
三、ProxyScrape:不想自己跑采集验证,直接调API
如果你完全不想碰代码,或者只是临时需要一批代理,ProxyScrape是最省心的选择。它本质上是一个代理聚合服务——背后已经帮你做了采集和验证,你只需要调API拿现成的。免费版能做什么:

· 每天几千次API请求(具体数字随政策变动,大致够中小规模使用)
· 支持按协议筛选:HTTP / HTTPS / SOCKS4 / SOCKS5
· 支持按匿名度筛选:elite(高匿)/ anonymous(普匿)/ transparent(透明)
· 支持按国家筛选(两位国家代码)
· 返回JSON格式,直接解析就能用

# 获取20个HTTPS高匿代理,返回JSON
https://api.proxyscrape.com/v3/free-proxy-list/get?request=display_proxies&protocol=https&proxy_format=protocol&format=json&limit=20&anonymity=elite
# 返回格式:
[
{"protocol": "https", "proxy": "103.156.xx.xx:8080", "port": "8080"},
{"protocol": "https", "proxy": "45.79.xx.xx:3128", "port": "3128"},
...
]免费版的最大问题
ProxyScrape免费API返回的代理,可用率不是100%。因为它是定时刷新的,不是实时验证的。你拿到代理之后,自己再跑一遍验证才能保证可用率。另外,免费版的请求频率有上限,如果大规模爬虫每分钟要几百个代理,免费版不够用,得升付费。
四、三种匿名度到底差在哪
代理采集工具都会标注"高匿""普匿""透明",很多人搞不清楚区别。其实本质就是HTTP头部里多了什么、少了什么。做爬虫或数据采集,只认"高匿"(Elite/High Anonymous)。普匿在某些场景能过,但不保险。透明代理等于告诉目标站"我在用代理,而且我的真实IP是XXX",没有任何意义。验证一个代理到底是不是高匿,方法也简单:用代理访问一个能回显HTTP头部的检测页面(网上有很多这样的服务),看返回结果里有没有`HTTP_X_FORWARDED_FOR`、`HTTP_VIA`、`HTTP_PROXY_CONNECTION`这些头部。一个都没有,就是高匿。五、付费代理和免费代理的边界在哪里
说完了免费采集方案,得承认一个事实:免费代理的质量上限摆在那里。如果你做的不是"偶尔爬几个页面",而是每天几万到几十万请求,付费代理是绕不开的。免费代理 vs 付费代理,四个维度的真实差距
| 对比维度 | 免费代理 | 付费代理 |
|---|---|---|
| 可用率 | 10%-30%(采集2000条能用的200-600条,但半小时后可能只剩一半) | 95%以上(服务商自己维护和淘汰) |
| 稳定性 | 随时可能挂,单次请求超时率高 | 有SLA保障,掉线自动切换 |
| 速度 | 参差不齐,延迟从几十ms到几秒 | 通常控制在1秒以内 |
| IP池规模 | 几百到几千条可用(而且大家都在用同一批) | 几万到几千万(按量付费,独享) |
| 安全性 | 低——你经过的代理可能也在记录你的流量 | 高——有合同约束和服务条款 |
⚠ HTTPS代理和HTTP代理不是一回事
很多人以为代理标注"支持HTTPS"就是能转发HTTPS流量。实际上,代理分两种能力:①代理本身支持HTTPS协议(即代理服务器和你的客户端之间走TLS加密);②代理能转发HTTPS请求(通过CONNECT隧道)。大部分免费代理是第②种——代理和你的连接是明文HTTP,但它能帮你转发HTTPS请求到目标站。真正支持HTTPS的代理(客户端到代理也是加密的)在免费池里很少见。如果你的场景对中间人攻击敏感,这一点要格外注意。
六、怎么选:一张表覆盖三种使用场景
💡 组合方案(最实用)
实际工程里最常见的做法不是单选一个,而是组合:服务器上部署proxy_pool作为基础代理池,同时在爬虫代码里接入ProxyScrape API作为补充源,两个源合并去重后再用多线程做最终验证,只保留验证通过的。 这样既有了proxy_pool的持续采集能力,又有了ProxyScrape的API便利性,还能自己再筛一遍保证质量。代价是多写几十行Python代码。
说穿了,代理采集的核心矛盾不是"有没有工具",而是采集到的代理能不能用、能用多久。免费代理的质量天然波动大,所以工具解决的其实是"降低验证和淘汰的人工成本"——把原本你手动一个一个试的工作,变成程序自动跑、定时跑、持续跑。三个工具里,ProxyBroker适合"我现在就要",proxy_pool适合"我每天都要",ProxyScrape适合"我不想自己跑",选哪个取决于你的场景在哪个区间。
