ProxyCatV3.0发布:从「换IP的小工具」,到一台代理池中间件"

admin 2026-10-16 04:33:18 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

ProxyCat V3.0 发布:从「换 IP 的小工具」,到一台代理池中间件

原创

shironeko
shironeko

樱花庄的本间白猫

2026年10月5日 17:33
福建

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

部署一次、永久可用的代理池中间件。

全新UI

写在前面

做渗透测试的人大多遇到过这种情况:目标站的 WAF 开始封 IP,扫描器刚跑出点东西就卡住了。

想换 IP,隧道代理一天要 10 到 500 元;自己攒一批短效 IP,又总是卡在「这些 IP 到底还能不能用」上。

ProxyCat 最早就是为了解决这个问题。短效 IP 便宜得很(平均 0.03–0.4 元一天),但直接拿来用体验很差,于是这个项目对外提供一个固定的代理端口,背后自动换 IP,Yakit、Burp、sqlmap 这些工具照常填地址就能用,部署一次可以长期跑。

项目原理图

V2.x 解决的是「有没有」的问题,V3.0 想解决的是「扛不扛得住」。这次改动很大,几乎每个核心模块都重写过,不是打补丁的程度。

一、一次同时用多个出口,而不是换着用

V2.x 的运行方式是:当前用一个上游代理,到点或者失效了再换下一个。这个模式有个绕不过去的问题,你的速度上限被单个出口 IP 的限流卡死了。

V3.0 改成维护一个出口池,同时有 10 个上游代理在用(exit_count,可调),请求按各出口当前的负载分配,不是简单地轮流来。如果上游是按 IP 限流的,出口越多,能扛住的并发就越高。

每个出口有各自的寿命,到期单独换掉,不是攒一批一起换。寿命这里还分了两种算法:一种是按时间(interval,默认 60 秒),一种是按这个出口被分配了多少次请求(request_interval)。两条规则同时生效,谁先到就换谁,因为有的代理商是按时间掐你,有的按次数掐你。

出口轮换配置

面板上能逐个看到在用出口的地址和剩余寿命,命令行也一样会打印。

二、坏出口怎么判

旧的判断方式是「连续失败 N 次就换掉」。但真实网络里,一次抖动可能同时掐断好几条隧道,连续计数很容易被清零,中间随便成功一次,之前的失败就算过去了。

V3.0 改成看最近 10 次结果里的失败占比:

  • 占比过半:分配请求时排到健康出口后面,但还能用,也没有冷却时间。后面成功几次,占比自然就降回来了。
  • 占比到九成,并且这 10 次里至少有 5 次结果:直接从名册里移出去,后台补新的。
  • 名册里最后一个出口永远不动。停掉它等于全线 503,让它继续顶着,比没有出口强。

这样「一次网络抖动」和「这个出口真坏了」就能分开:前者的失败会被后面的成功稀释掉,后者占比只会一路涨。

三、内置的代理池

V3.0 把代理池并进了主进程,不再单独占一个端口,管理入口就在面板的「代理池」页签,接口统一挂在 /api/pool/* 下面。配置也从原来单独的 yaml 搬进了 config.ini,旧配置第一次启动会自动迁移。

池里每条代理都有一份质量画像:

  • 健康分 0–100,由延迟、成功率、稳定性、可用时长、匿名度、存活时长加权算出来。成功率那一项取的是 Wilson 置信下界,新入库的代理不会因为一两次偶然失败就被打到很低。
  • 匿名度分透明、匿名、高匿三档,判定方式改成了校验证书,第三方代理没法再靠伪造回显把自己刷成高匿。
  • 归属地离线解析(GeoLite2 加纯真库),中英文名字按界面语言显示。

还有一条使用反馈的闭环:转发时真的发现某个出口不通,确认之后回报给池子,连续失败到阈值就标记失效,下一轮自动重验证测通了再恢复。

这里有个刻意的取舍:反馈只改「是否可用」和检查次数,不碰健康分。因为程序分不清是代理坏了,还是我们自己网络抖了,不该让一次偶发失败把一条好代理永久删掉。

四、面板

面板从横排页签改成了左侧边栏,四个区:代理配置、代理池、访问控制、运行日志。

访问控制

新增的东西比较多:

  • 命令面板:Ctrl/⌘+K 打开,可以直接搜命令。1–4 切视图、r 刷新、/ 聚焦搜索、? 看快捷键;表格里方向键移动,空格选中,Shift 扩选。
  • 深色主题:没手动切过时跟随系统,深色下的文字配色按对比度重做过。
  • 访问明细:每次请求都能查到,支持按时间筛选、分页、导出 CSV 或 JSON。CSV 带 BOM,Windows 的 Excel 打开不乱码;记录存在 SQLite 里,重启不丢。
  • 域名统计:按「域名 + 上游代理」两个维度聚合。同一个域名走不同代理结果可能完全不同,只按域名统计会把最有用的信息抹平。
  • 批量任务:导入、批量验证、插件抓取这些耗时操作会显示进度、速度、剩余时间和分类计数,随时能取消。
  • 日志分了四类:主程序、访问、代理、错误分别写四个文件,各自按大小轮转,支持级别和关键词过滤、看历史文件、导出、清理。

另外几个小改动,都是实际用起来才会想到的:

  • 绕过白名单:命中的目标(支持 *.baidu.com、192.168.1.* 这种通配符)直接本机连,不走上游,HTTP 和 SOCKS5 都生效。
  • 凭据管理:取代理接口的账号密码可以存好几套,起个名字,用的时候一键切换,不用再改 config.ini。
  • 配置全部收进面板,93 个键按用途分组,调优参数收在「高级选项」里。
  • 表格右键能复制成 curl 命令,列宽能拖而且会记住,删除之类的操作换成了自己画的确认框。

五、性能

内部改了几处:生产启动换成 waitress,监听连接交给独立线程 accept(Windows 上实测接受速率从 825 次/秒提到 3000+),日志改成异步写,池子的落库改成先写内存再批量入库。

实测数据:

场景 数字
压测(3000 请求 / 500 并发) 成功 3000,失败 0,单次延迟约 550–670 ms
并发空隧道(2000 条) 每连接约 148 KB 内存,空转 CPU 低于 0.5%
单隧道吞吐(回环) 约 520 MB/s
小报文往返 p50 0.27 ms / p95 0.47 ms

六、怎么部署

Docker:

docker compose up -d --build

源码运行,需要 Python 3.10 以上:

pip install -r requirements.txt
python3 app.py

两个端口:1080 是代理监听(HTTP 和 SOCKS5 共用),5001 是面板。

部署完跑两条命令,能通就说明它在工作:

# 面板在监听,期望 302
curl -i http://127.0.0.1:5001/

# 代理在转发,期望 200
curl -x http://neko:[email protected]:1080 https://www.baidu.com -I

有三件事提前说一下,能省不少时间:

  1. 面板返回 401 是正常的,设置过 token 就必须带 ?token= 才能打开。仓库自带的 token 是公开的,对外用之前记得改掉。
  2. Docker 容器以非 root 运行,config/、logs/、modules/proxypool/data/ 三个挂载目录的属主得和 PUID/PGID 对上,对不上会写不进配置和日志。
  3. stop_grace_period 留的 60 秒是给写队列排空用的,请不要改小。

七、面板里的广告位是怎么回事

有朋友第一次打开面板会看到一块推广位,这里说清楚它是什么。

它不是统计代码,也不是什么第三方 SDK。V3.0 把 Bootstrap 和所有外部 JS 都移除了,面板不引任何外站脚本。这块推广位读的是 config/ads/ 目录下的 JSON 文件,标题、正文、图片、跳转链接都写在里面,直接打开文件就能看到它会往哪跳,图片也是浏览器自己去加载的,程序本身不发这个请求。

留着它的理由很简单:开源项目未打算做收费版,服务器、域名、开发和 IP 的开销只能靠赞助和广告回血。

不想看可以直接关:

  • 面板上点关闭就行;
  • 想彻底去掉,把 config/ads/ 里对应 JSON 的 enabled 改成 false,或者干脆删掉这个文件。image_url 留空的话只显示文字,不加载图片。

八、想请你也帮一把

开源项目最难的不是写代码,是长期维护。如果你觉得 ProxyCat 帮到了你,可以:

  • 赞助作者:金额随意,一杯咖啡或者一顿饭都算数,赞助名单会记在 Thanks-for-sponsorship 里;
  • 广告位合作:如果你是代理服务商或者有相关产品,面板的广告位、README 的推荐位都可以放,可以直接找作者谈;
  • 顺手帮个忙:点个 Star、提个 Issue 说说不顺手的地方、把文章转给同样在做网安的朋友,这些也都算。

来杯瑞幸吧

联系作者:公众号「樱花庄的本间白猫」,或者直接在 GitHub 提 Issue。

写在最后

V3.0 还有不少零散的改动:版本检查、归属地库更新、插件级的验证策略和测试地址、数据库备份恢复、配置热重载、以及一批稳定性修复,完整的记录都在仓库的更新日志里。

项目地址:https://github.com/honmashironeko/ProxyCat

文档是中英双语,功能特性、详细配置、使用手册、报错排查、接口文档都有。

免责声明:本工具仅供授权范围内的安全测试与学习研究使用,使用者需自行承担因使用本工具产生的一切责任。


应急响应-Linux环境入侵排查篇" 网络安全文章

应急响应-Linux环境入侵排查篇"

本文系统阐述Linux环境入侵排查的应急响应方法论,涵盖系统信息收集、恶意用户识别、持久化后门排查及恶意文件查找等核心环节。文章详细演示了使用top、ps、netstat等命令定位异常进程,通过检查/etc/passwd文件识别提权用户,排查环境变量、服务及计划任务等持久化后门,并利用find命令按时间范围查找恶意文件。提供了可操作的排查命令与思路,对安全运营人员具有实用参考价值。
评论:0   参与:  0