FreeProxyPool-博客宣传文章

FreeProxyPool:开箱即用的免费代理 IP 池系统 —— 自动采集 · 三层验证 · API 分发

做爬虫开发和数据采集的同学都懂:没有可用的 HTTP 代理,采集任务走到一半就被目标站封 IP;买付费代理池,成本又蹭蹭往上涨。免费代理能用吗?能,但公开渠道采到的免费代理一半以上是死的,直接拿来做请求,带宽和时间都浪费在重试上。

今天给大家介绍一个开源项目——FreeProxyPool,它把"采集 → 验证 → 分发"这条链路做成了开箱即用的完整系统,专治免费代理的各类疑难杂症。

FreeProxyPool 免费代理 IP 池系统

一、项目名片

项目信息 内容
项目名称 FreeProxyPool —— 轻量、可分布式扩容的免费代理 IP 池系统
GitHub 仓库 https://github.com/chinayury/FreeProxyPool
当前版本 v0.1.1
技术栈 Python 3.12 · FastAPI · Redis · aiohttp · Docker Compose
开源许可证 AGPL-3.0-or-later(GNU Affero 通用公共许可证 v3)
开发者 智维ITMSKY(官网:http://www.itmsky.com)

二、它解决什么问题

免费代理的公开来源普遍存在三个老问题,FreeProxyPool 针对每一点都做了闭环处理:

老问题 FreeProxyPool 的处理
采到的代理一半是死的,浪费调用方带宽 三层递进验证(TCP → 代理功能 → 多轮复检)+ 客户端失效回报接口
坏源一直拖慢每一轮采集 单源熔断(连续失败计数进冷却)+ "解析出 0 条即判失败"
调用方发现代理失效只能干等下一轮复检 POST /report/ 立即淘汰并拉黑,不用等

三、五大核心特色

1. 38 个采集源,声明式接入

内置 38 个采集源(30 个默认启用),采用声明式注册:想新增一个源,只需在 fetcher/sources/ 目录放一个 .py 文件,注册表自动扫描发现,不用改任何其他代码。每个源带单源熔断(连续失败达阈值进入冷却,冷却结束自动复位)和指数退避重试(1s → 2s → 4s,上限 8s),坏源不会拖垮整轮采集。

2. 三层递进验证,只留真正能用的代理

这是整个系统最核心的设计。每一个候选代理都要闯三关:

  • 第一层 TCP 连通探测:毫秒级握手,不通直接拉黑;
  • 第二层 代理功能验证:经代理请求目标,记录延迟、出口 IP、匿名度,并探测 CONNECT 隧道能力;SOCKS4 / SOCKS5 按协议分流建立会话;
  • 第三层 多轮复检 ×N:连续 N 轮全部通过才判定有效(轮数可配),杜绝"碰巧能用一次"的假活代理。

还有一个贴心的细节——校验目标看护:探测目标站点自己宕机 ≠ 代理失效,此时校验失败不惩罚代理(不退避、不清 streak、不淘汰),目标恢复后自动重验,避免大规模误伤。

三层递进验证流程

3. 失效回报闭环:调用方"举手"立即淘汰

调用方(爬虫、SDK)在使用中发现某个代理失效,调一下 POST /report/,服务端立即剔除并拉黑该代理,不需要等下一轮复检。官方 SDK(同步 requests / 异步 aiohttp 双客户端)内置了自动回报失效代理的能力,还附带 Scrapy 下载中间件范例,代理失效即回报。

4. Redis 存储设计:O(1) 统计 + 地域索引

  • Hash 存代理元数据、ZSet 做五类索引(评分 / HTTPS / 过期 / 黑名单 / 地域)、List 做待验队列;
  • HLEN + ZCARD 实现 O(1) 池统计,不再每次请求全量扫描;
  • 地域索引支持 ?area=CN 直接在指定地域内取候选,索引不可用时自动退回全量扫描;
  • 待验队列带长度上限 + 背压裁剪,验证服务长时间停摆也不会撑爆内存。

5. 标准化 API + 安全与运维全家桶

  • 三种分发策略:延迟优先 / 随机 / 轮询;
  • 延迟分层 tier:fast / medium / slow / unknown,可按档筛选、可统计分布;
  • 传输协议筛选:protocol=http|socks4|socks5;
  • 批量分发、精简统计、Prometheus 指标(/metrics)、六类内置告警(日志 + Redis 事件 + Webhook 推送,带冷却去重);
  • 安全设计硬核:API Key 恒定时长比较、Redis 故障时 fail-closed(限流不放开、鉴权不放开)、采集 URL 协议白名单 + 内网黑名单双重校验(防 SSRF)、后台登录锁定 + CSRF 防护;
  • 单代理诊断 CLI:python -m freeproxypool check 1.2.3.4:8080,一次输出 TCP / HTTP / HTTPS 分层延迟、出口 IP、匿名度、国家码与最终判定。

四、系统架构:四进程职责分离,可分布式扩容

系统拆分为 collector / validator / gateway / scheduler 四个进程,职责严格分离、互不重复触发,全部可以独立扩缩容(scheduler 除外——它是单例,多副本会重复执行定时任务):

FreeProxyPool 系统架构

  • collector(采集层,可多副本):扫描采集源 → 过滤内网/保留地址 → 三层去重 → 推入待验队列;
  • validator(验证层,可多副本):消费队列 → 三层验证 → 写入有效池;
  • gateway(网关层,推荐 2~4 副本):API 分发 + 管理后台 + 指标;
  • scheduler(调度层,单副本):存量复检 / 数据清理 / 统计告警。

Docker Compose 一键编排 6 个容器(redis / collector / validator / gateway / scheduler / nginx),Nginx 做统一入口、限流与静态资源反代,MySQL 仅作可选冷存储归档(默认关闭)。

五、真实运行数据(v0.1.1 实测)

以下数据来自作者部署在测试服务器上的实例(实测于 2026-11-14,v0.1.1):

  • 上一轮采集:80,903 条候选代理进入验证队列;
  • 三层验证后有效池留存:142 个高质量代理(其中延迟分层 fast 30 / medium 86 / slow 26);
  • 支持 HTTPS 目标的代理:66 个;
  • 覆盖 27 个国家/地区(US、CN、DE、JP、SG、HK 等);
  • 协议分布:HTTP 94 / SOCKS5 41 / SOCKS4 7;
  • 黑名单累计淘汰:31,769 个失效代理——淘汰机制的"工作量"可见一斑。

FreeProxyPool 管理后台

六、五分钟上手

# 1. 准备配置(必填项未设置时 compose 会直接报错,这是刻意设计)
cp .env.example .env
python -c "import secrets;print('API_KEY =', secrets.token_urlsafe(32))"
python -c "import secrets;print('ADMIN_PASSWORD = Fp#'+secrets.token_urlsafe(14))"
# 把上面两行结果填进 .env

# 2. 启动(六个容器一键拉起)
docker compose up -d --build

# 3. 打开管理后台
#    http://localhost:5020/admin

不用 Docker 也可以 pip install -e . 后分别运行 python -m freeproxypool collector / validator / gateway / scheduler,或用 python -m freeproxypool all 单进程跑全部(适合本地调试)。

七、API 使用示例

开启 API_KEY 后,携带请求头 API-KEY: <key> 即可调用:

KEY="你的密钥"

# 取一个代理:只要最快的 SOCKS5
curl -H "API-KEY: $KEY" "http://localhost:5020/get/?tier=fast&protocol=socks5&strategy=latency"

# 批量取 20 个中等延迟代理
curl -H "API-KEY: $KEY" "http://localhost:5020/batch/?n=20&tier=medium"

# 全量导出(一行一个 ip:port,方便喂给脚本)
curl -H "API-KEY: $KEY" "http://localhost:5020/all/?format=text"

# 客户端发现代理失效 → 回报,服务端立即剔除并拉黑
curl -X POST -H "API-KEY: $KEY" -H "Content-Type: application/json" \
     -d '{"proxies":["1.2.3.4:8080","5.6.7.8:3128"]}' \
     "http://localhost:5020/report/"

交互式 API 文档开箱即有(FastAPI 自动生成):http://localhost:5020/docs

FreeProxyPool API 文档

八、适用场景与合规说明

FreeProxyPool 的定位是个人学习与自有爬虫测试,适合:

  • 数据采集 / 爬虫开发需要低成本代理资源;
  • 自有服务的接口测试、压测演练场景;
  • 学习分布式系统设计(四进程 + Redis 多结构存储 + 异步高并发校验)。

项目以 AGPL-3.0-or-later 开源:若将本系统作为网络服务对外提供(含修改版),须按许可证第 13 条向服务使用者提供对应源码。同时请遵守采集礼仪——尊重 robots 协议、控制请求频率、禁止对源站压测。

结语

如果你也在为"免费代理不可用"而头疼,不妨给 FreeProxyPool 一个机会:五分钟 Docker 部署,38 个采集源自动补货,三层验证保证质量,标准 API 直接喂给你的爬虫。

GitHub 仓库:https://github.com/chinayury/FreeProxyPool (觉得不错的话,欢迎点个 Star ⭐)

如需二次开发或有项目定制需求,欢迎联系站长。


开发者:智维ITMSKY · 官网:http://www.itmsky.com · 许可证:AGPL-3.0-or-later

上一篇 银河麒麟桌面操作系统 V101常见问题9
下一篇 免费模型日报 2026-11-10|AIHot 上线 Token 聚合,25 个免费条目已下架