ProxyCat/README.md

313 lines
12 KiB
Markdown
Raw Normal View History

2024-08-22 09:33:37 +08:00
![ProxyCat](https://socialify.git.ci/honmashironeko/ProxyCat/image?description=1&descriptionEditable=%E4%B8%80%E6%AC%BE%E8%BD%BB%E9%87%8F%E7%BA%A7%E7%9A%84%E4%BC%98%E7%A7%80%E4%BB%A3%E7%90%86%E6%B1%A0%E4%B8%AD%E9%97%B4%E4%BB%B6%EF%BC%8C%E5%AE%9E%E7%8E%B0%E4%BB%A3%E7%90%86%E7%9A%84%E8%87%AA%E5%8A%A8%E8%BD%AE%E6%8D%A2&font=Bitter&forks=1&issues=1&language=1&logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F139044047%3Fv%3D4&name=1&owner=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Dark)
2024-09-29 17:30:18 +08:00
<p align="center">
<a href="/ProxyCat-EN/README-EN.md">English</a>
·
<a href="/README.md">简体中文</a>
</p>
## 目录
- [开发缘由](#开发缘由)
- [功能特点](#功能特点)
- [安装与使用](#安装与使用)
- [依赖安装](#依赖安装)
- [运行工具](#运行工具)
- [手动录入代理地址](#iptxt-手动录入代理地址)
- [配置文件](#配置文件)
- [演示效果](#演示效果)
- [使用接口自动获取代理地址](#使用接口自动获取代理地址)
- [性能表现](#性能表现)
- [免责申明](#免责申明)
- [更新日志](#更新日志)
- [开发计划](#开发计划)
- [鸣谢](#鸣谢)
- [赞助开源](#赞助开源)
- [代理推荐](#代理推荐)
## 开发缘由
在渗透过程中经常需要隐藏或更换IP地址以绕过安全设备。然而市面上的隧道代理价格高昂普遍在20-40元/天这对于许多人来说难以接受。笔者注意到短效IP的性价比很高一个IP只需几分钱平均每天0.2-3元。
综上所述,**ProxyCat** 应运而生本工具旨在将持续时间仅有1分钟至60分钟不等的短效IP转变为固定IP供其他工具使用形成代理池服务器部署一次即可永久使用。
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
![项目原理图](./assets/202408260021207.png)
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
## 功能特点
2024-08-22 17:49:23 +08:00
2024-10-23 16:44:15 +08:00
**上游多协议监听**
- **双协议支持**:支持 SOCKS5 和 HTTP 协议监听,适配更多工具
**多代理协议支持**
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
- **SOCKS5 代理**:支持 SOCKS5 协议,适用于各种网络环境。
- **HTTP/HTTPS 代理**:支持 HTTP 和 HTTPS 代理,满足不同应用场景需求。
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
**代理轮换模式**
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
- **循环模式Cycle**:按照顺序循环使用代理列表中的每一个代理,确保均衡使用。
- **负载均衡模式Load Balance**:随机选择可用代理,分摊流量负载,提升性能。
- **自定义模式Custom**:允许用户自定义代理选择逻辑,灵活满足特定需求。
**动态代理获取**
- **使用 GetIP 函数获取代理**:支持通过 GetIP 函数动态获取即时可用的代理,保证代理的实时性和有效性。
**代理验证**
- **自动检测有效性**:在启动时自动检测代理的可用性,过滤无效代理,确保代理列表的可靠性。
- **支持多种协议检测**:针对 HTTP、HTTPS 和 SOCKS5 代理进行专门的检测,提升验证精度。
2024-10-23 16:44:15 +08:00
- **支持代理失效切换**:在转发流量过程中,遇到代理服务器突然失效,可自动切换到新的代理上。
2024-09-29 17:30:18 +08:00
**认证机制**
- **用户名/密码认证**:支持基于用户名和密码的代理认证,增强代理的安全性,防止未授权访问。
**高并发处理**
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
- **异步架构**:基于 asyncio 实现异步处理,支持大规模并发连接,适用于高流量需求。
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
**日志与监控**
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
- **彩色日志输出**:通过 colorama 实现彩色日志,便于实时监控和调试。
- **实时状态更新**:显示当前代理状态和下次切换时间,帮助用户了解代理动态。
**配置灵活**
- **可配置文件**:通过 `config.ini` 文件轻松调整端口、模式、认证信息等参数,适应不同使用场景。
- **命令行参数**:支持通过命令行指定配置文件路径,增加使用的便捷性。
**自动更新检查**
- **版本检测**:内置版本检测功能,自动检查最新版本并提醒用户更新,确保软件的持续优化。
## 安装与使用
### 依赖安装
工具基于 Python 实现,建议使用 **Python 3.8** 以上版本。在使用前,请使用以下命令配置依赖:
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
```bash
pip install -r requirements.txt
2024-09-29 17:30:18 +08:00
# 或推荐使用国内源:
2024-08-31 16:29:47 +08:00
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
### 运行工具
在项目目录下运行以下命令,查看帮助信息以确认配置成功:
```bash
python3 ProxyCat.py -h
```
回显如下信息即表示配置成功:
2024-08-21 20:33:44 +08:00
```
|\ _,,,---,,_ by 本间白猫
ZZZzz /,`.-'`' -. ;-;;,_
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_) ProxyCat
2024-08-31 16:29:47 +08:00
用法: ProxyCat.py [-h] [-c]
2024-08-21 20:33:44 +08:00
参数:
2024-08-31 16:29:47 +08:00
-h, --help 显示此帮助信息并退出
-c C 指定配置文件名(默认config.ini)
2024-08-21 20:33:44 +08:00
```
2024-08-31 16:29:47 +08:00
### ip.txt 手动录入代理地址
2024-09-29 17:30:18 +08:00
按照以下格式 (`socks5://127.0.0.1:7890``http://127.0.0.1:7890`),一行一个填入 `ip.txt` 文件中:
2024-08-23 15:29:05 +08:00
2024-09-29 17:30:18 +08:00
```txt
2024-08-31 16:29:47 +08:00
socks5://127.0.0.1:7890
https://127.0.0.1:7890
http://127.0.0.1:7890
...
2024-08-23 15:29:05 +08:00
```
2024-09-29 17:30:18 +08:00
> 如果您缺少合适的国内代理地址,且有几块钱预算,可以查看微信公众号:樱花庄的本间白猫。菜单页面长期更新,获取多家低价代理购买地址,为作者带来几毛钱的推荐收益~
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
### 配置文件
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
`config.ini`(或自定义配置文件)中配置参数:
```ini
2024-08-31 16:29:47 +08:00
[SETTINGS]
# 本地服务器监听端口(默认为:1080)
port = 1080
2024-08-23 15:29:05 +08:00
2024-09-29 17:30:18 +08:00
# 代理地址轮换模式cycle 表示循环使用custom 表示使用自定义模式load_balance 表示负载均衡(默认为:cycle)
2024-08-31 16:29:47 +08:00
mode = cycle
2024-08-23 15:29:05 +08:00
2024-08-31 16:29:47 +08:00
# 代理地址更换时间(秒),设置为 0 时每次请求都更换 IP(默认为:300)
interval = 300
2024-08-23 15:29:05 +08:00
2024-08-31 16:29:47 +08:00
# 本地服务器端口认证用户名((默认为:neko)当为空时不需要认证
username = neko
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
# 本地服务器端口认证密码(默认为:123456)当为空时不需要认证
password = 123456
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
# 是否使用 getip 模块获取代理地址 True or False(默认为:False)
use_getip = False
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
# 代理地址列表文件(默认为:ip.txt)
proxy_file = ip.txt
2024-09-09 15:04:22 +08:00
# 是否启用代理检测功能 True or False(默认为True)
check_proxies = True
2024-08-31 16:29:47 +08:00
```
2024-08-21 20:39:43 +08:00
2024-08-31 16:29:47 +08:00
配置对应参数后即可使用:
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
```bash
2024-09-29 17:30:18 +08:00
python3 ProxyCat.py
2024-08-31 16:29:47 +08:00
```
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
### 演示效果
2024-08-21 20:39:43 +08:00
2024-09-29 17:30:18 +08:00
**固定代理地址(默认)**
2024-09-03 16:00:00 +08:00
```
http://neko:123456@127.0.0.1:1080
http://127.0.0.1:1080
socks5://neko:123456@127.0.0.1:1080
socks5://127.0.0.1:1080
```
2024-08-21 20:39:43 +08:00
2024-09-29 17:30:18 +08:00
如果您是部署在公网,将 `127.0.0.1` 替换为您的公网IP即可。
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
![界面展示图](./assets/Clip_2024-08-29_10-15-56.png)
2024-08-21 20:33:44 +08:00
2024-08-31 16:29:47 +08:00
### 使用接口自动获取代理地址
2024-08-25 23:15:16 +08:00
2024-09-29 17:30:18 +08:00
工具支持直接调用代理地址获取的API接口。当您配置 `use_getip = True` 时,工具将不再从本地 `ip.txt` 中读取代理地址,而是通过执行 **getip.py** 脚本来获取新的代理地址请确保您的IP已加白名单
2024-08-25 23:15:16 +08:00
2024-09-29 17:30:18 +08:00
此时,您需要将 **getip.py** 的内容修改为您自己的接口,格式为 `IP:PORT`。默认为 `socks5` 协议,如需使用 `http`,请手动更改。
2024-08-21 20:49:34 +08:00
2024-08-31 16:29:47 +08:00
## 性能表现
2024-08-21 20:49:34 +08:00
2024-09-29 17:30:18 +08:00
经过实际测试在代理地址服务器性能充足的情况下ProxyCat 能够处理 **1000** 并发连接且不丢包,基本可以覆盖大部分扫描和渗透测试需求。
2024-08-21 20:49:34 +08:00
2024-09-29 17:30:18 +08:00
![性能测试图](./assets/8e3f79309626ed0e653ba51b6482bff.png)
2024-08-25 22:26:49 +08:00
2024-08-31 16:29:47 +08:00
## 免责申明
2024-08-25 22:47:14 +08:00
2024-09-29 17:30:18 +08:00
- 如果您下载、安装、使用、修改本工具及相关代码,即表明您信任本工具。
- 在使用本工具时造成对您自己或他人任何形式的损失和伤害,我们不承担任何责任。
- 如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
- 请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,并选择接受或不接受。
- 除非您已阅读并接受本协议所有条款,否则您无权下载、安装或使用本工具。
- 您的下载、安装、使用等行为即视为您已阅读并同意上述协议的约束。
2024-08-21 20:49:34 +08:00
2024-08-31 16:29:47 +08:00
## 更新日志
2024-10-23 16:44:15 +08:00
### **2024/10/23**
- 重构代码结构,将部分代码分割成单独文件。
- 支持代理过程中,遇到代理服务器突然失效,自动请求更换新的代理服务器,并重置更换计时器。
2024-09-29 17:30:18 +08:00
### 2024/09/29
2024-09-09 15:04:22 +08:00
2024-09-29 17:30:18 +08:00
- 去除使用较少的单次循环,更换为自定义模式,可根据需求自定义更换代理的逻辑。
- 对代理有效性检测修改为异步,提高速度。
- 去除问题较多的 SOCKS4 协议的代理支持。
- 对日志系统进行美化。
- 改进异常处理逻辑。
- 增加对代理格式的校验,确保格式正确。
2024-09-09 15:04:22 +08:00
2024-09-29 17:30:18 +08:00
### 2024/09/10
2024-09-03 16:00:00 +08:00
2024-09-29 17:30:18 +08:00
- 优化并发效率,支持在未收到响应包的情况下提前进行下一个请求,提高效率。
- 增加负载均衡模式,该模式下将随机向代理地址发送请求,并利用并发代理的方式,提高请求效率。
- 代理有效性检测修改为异步,提高效率。
2024-09-03 16:00:00 +08:00
2024-09-29 17:30:18 +08:00
### 2024/09/09
2024-08-21 20:49:34 +08:00
2024-09-29 17:30:18 +08:00
- 增加功能,可设置首次启动时是否对 `ip.txt` 中的代理地址进行有效性校验,并只使用有效的代理地址。
- 函数降级,支持更低版本的 Python。
2024-08-23 15:29:05 +08:00
2024-09-29 17:30:18 +08:00
### 2024/09/03
2024-08-25 22:26:49 +08:00
2024-09-29 17:30:18 +08:00
- 增加本地 SOCKS5 监听,适配更多软件。
- 部分函数更换,适配更低版本的 Python。
- 美化回显内容。
2024-08-25 22:26:49 +08:00
2024-09-29 17:30:18 +08:00
### 2024/08/31
2024-08-24 13:31:25 +08:00
2024-09-29 17:30:18 +08:00
- 项目大结构调整。
- 美化显示,持续提示下一次更换代理地址的时间。
- 支持 `Ctrl+C` 停止运行。
- 大幅度调整为异步请求,并发效率提升,实测 **1000** 并发,共 **5000** 包,丢包约 **50** 包,稳定性约 **99%****500** 并发无丢包。
- 不再采取运行时指定参数方案,修改为从本地 `ini` 配置文件中读取,易用性更高。
- 支持本地无认证,适配更多软件代理方式。
- 增加版本检测功能,自动提示版本信息。
- 增加代理服务器地址的身份鉴别功能,仅支持本地读取,因大多数 API 需白名单,未提供重复。
- 增加功能,仅在收到新请求的情况下才使用 `getip` 更新,减少 IP 消耗。
- 增加自识别代理服务器地址协议,以适配更多代理商。
- 增加支持 HTTPS、SOCKS4 代理协议,目前已覆盖 HTTP、HTTPS、SOCKS5、SOCKS4 协议。
- 修改 `asyncio.timeout()``asyncio.wait_for()`,适配更低的 Python 版本。
2024-08-24 13:31:25 +08:00
2024-09-29 17:30:18 +08:00
### 2024/08/25
2024-08-23 15:29:05 +08:00
2024-09-29 17:30:18 +08:00
- 读取 `ip.txt` 时自动跳过空行。
-`httpx` 更换为并发池,提高性能。
- 增加缓冲字典,相同站点降低延迟。
- 每次请求更换 IP 逻辑修改为随机选择代理。
- 采用更高效的结构和算法,优化请求处理逻辑。
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
### 2024/08/24
2024-08-21 20:33:44 +08:00
2024-09-29 17:30:18 +08:00
- 采用异步方案提高并发能力和减少超时。
- 重复代码封装,提高代码复用性。
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
### 2024/08/23
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
- 修改并发逻辑。
- 增加身份鉴别功能。
- 增加 IP 获取接口,永久更换 IP。
- 增加每次请求更换 IP 功能。
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
## 开发计划
2024-09-01 21:28:19 +08:00
2024-09-29 17:30:18 +08:00
- [x] 增加本地服务器身份鉴别功能,保证在公网使用过程中不被恶意盗用。
- [x] 增加每次请求更换 IP 功能。
- [x] 增加静态代理自动获取更新模块,从而永久运行。
- [x] 增加负载均衡模式,同时使用大量代理地址发送,提高并发效率,减少单一服务器负载。
- [x] 增加版本检测功能。
- [x] 增加代理地址身份鉴别支持。
- [x] 增加功能,仅在收到新请求的情况下才使用 `getip` 更新,减少 IP 消耗。
- [x] 首次启动时批量对 `ip.txt` 中的代理服务器进行有效性检查。
- [x] 增加本地监听 SOCKS 协议,或全面改成 SOCKS以适配更多软件。
- [ ] 增加详细日志记录,记录所有连接 ProxyCat 的 IP 身份,支持多用户。
2024-10-23 16:44:15 +08:00
- [ ] 增加Web UI提供更加强大易用的界面。
- [ ] 增加docker一键部署简单易用。
- [ ] 开发 babycat 模块,可将 babycat 在任意服务器或主机上运行,即可变成一台代理服务器。
2024-09-09 15:14:19 +08:00
2024-09-29 17:30:18 +08:00
如果您有好的创意或在使用过程中遇到bug请通过以下方式联系作者反馈
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
微信公众号:**樱花庄的本间白猫**
2024-08-31 16:29:47 +08:00
## 鸣谢
本排名不分先后,感谢为本项目提供帮助的师傅们。
2024-09-29 17:30:18 +08:00
- [AabyssZG (曾哥)](https://github.com/AabyssZG)
- [ProbiusOfficial (探姬)](https://github.com/ProbiusOfficial)
- chars6
2024-08-31 16:29:47 +08:00
2024-09-29 17:30:18 +08:00
![Star History Chart](https://api.star-history.com/svg?repos=honmashironeko/ProxyCat&type=Date)
2024-08-23 15:29:05 +08:00
2024-08-31 16:29:47 +08:00
## 赞助开源
开源不易,如果您觉得工具不错,或许可以试着赞助一下作者的开发哦~
2024-09-29 17:30:18 +08:00
![赞助](./assets/202408260020820.png)
2024-08-31 16:29:47 +08:00
## 代理推荐
2024-08-23 15:29:05 +08:00
2024-08-31 16:29:47 +08:00
- [第一家便宜大碗代理购买用邀请码注册得5000免费IP+10元优惠券](https://h.shanchendaili.com/invite_reg.html?invite=fM6fVG)
2024-09-29 17:30:18 +08:00
- [各大运营商流量卡](https://172.lot-ml.com/ProductEn/Index/0b7c9adef5e9648f)