最近在做一个小采集项目,目标站限流挺狠,单 IP 一天几百请求就给你弹验证码。找了圈现成方案,最后用 jhao104/proxy_pool(GitHub 上搜就有)搭了一套,跑了两周,把实际情况记录一下,给有同样需求的人参考。 先说结论:免费代理池能用,但只能用在“对成功率要求不高的场景”。如果你的业务丢一条数据就心疼,别用免费的,真的。下面细说。 GitHub 上搜 proxy pool 出来一堆,大多年久失修。jhao104 这个项目 star 两万多,最近还有提交,issues 里提问也有人回,文档写得算清楚。核心逻辑很直接: 定时从十几个免费代理网站抓 IP( free-proxy-list.net 、proxyscrape 这些) 存进 Redis,给每个 IP 打分 定时校验,挂了就扣分,分数低于阈值就删掉 对外暴露一个 HTTP 接口,你的爬虫随取随用 代码量不大,Python 写的,想改逻辑随时能改,这点我很喜欢。 部署 机器是台 2C4G 的小鸡,装的 Docker,整个过程十分钟。 先起 Redis: docker run -d --name redis -p 6379:6379 redis 再起代理池: docker run -d --name proxy_pool -p 5010:5010 \ --env DB_CONN=redis://redis:6379/0 \ --link redis:redis \ jhao104/proxy_pool:latest 起来之后访问 http://127.0.0.1:5010/get 能拿到一个代理就算成功: {"proxy": "1.2.3.4:8080"} 我用的 requests,写了个简单的包装: import requests def get_proxy(): return requests.get("http://127.0.0.1:5010/get").json()["proxy"] def delete_proxy(proxy): requests.get("http://127.0.0.1:5010/delete", params={"proxy": proxy}) def fetch(url, retry=3): proxy = get_proxy() for i in range(retry): try: resp = requests.get( url, proxies={"http": f"http://{proxy}", "https": f"http://{proxy}"}, timeout=8, ) if resp.status_code == 200: return resp.text except Exception: pass # 这个代理不行,换下一个 delete_proxy(proxy) proxy = get_proxy() return None 请求失败就把代理踢掉重新取,池子会自动补充新的进来。 这是我两周里观察到的情况,样本不大但趋势应该靠谱: 池子平时维持在 100~300 个“活”代理,高峰期能到 500 单个免费代理平均存活时间不到半小时,很多抓回来十几分钟就死了 真实可用率(能成功请求目标站)大概 10%~20%,也就是说平均要试 5 到 10 个代理才成一次 HTTPS 站点比 HTTP 站点可用率明显更低 所以我的爬虫最后是这么跑的:并发开 20,每个请求失败自动换代理重试 3 次,整体任务成功率能压到 95% 以上。代价是总请求量放大了五六倍,对目标站来说等于每小时几千次请求……做采集的都懂,这里不展开。 踩过的几个坑 别把重要请求走免费代理。免费代理有个说不清的问题:你不知道流量经过了谁。登录态、cookie、API key 这类东西绝对不要从免费代理过,中间人攻击是真实存在的风险。我只用它抓公开页面。 Redis 记得加密码或者只监听 127.0.0.1。我一开始 -p 6379:6379 直接映射出去,第二天一看里面多了几个奇怪的 key,应该是被扫描器写垃圾了。公网机器务必注意。 免费源的质量分时段波动很大。国内白天池子小、死得快,后半夜反而稳定些,估计和国内外免费源更新频率有关。任务不急的话可以错峰跑。 某些免费源会返回机房 IP 甚至蜜罐。项目本身不带检测能力,需要质量的话得自己在校验环节加一步(比如请求 ip-api.com 判断代理类型再过滤)。 适合:课程作业、个人练手项目、抓一些不怕丢数据的公开页面、给自己的付费代理做备份池。 不适合:生产环境采集、任何带账号体系的目标站、对数据完整性有要求的任务。生产环境老老实实上付费住宅代理或者自建 VPS 池,这个免费池子的定位就是“聊胜于无”。 代码我就不贴全了,项目 README 写得挺细,照着跑就行。 1 个帖子 - 1 位参与者 阅读完整话题


  • 情报分类:服务器与云资源
  • 分类依据:内容涉及服务器、云资源或网络线路
  • 信息来源:服务器 / LINUX DO - 最新话题
  • 发布时间:2026/9/27 10:49:43