This commit is contained in:
本间白猫 2025-01-08 16:12:13 +08:00
parent fd77064143
commit 0d799759eb
4 changed files with 94 additions and 253 deletions

85
ProxyCat-Manual/logs.md Normal file
View File

@ -0,0 +1,85 @@
### 2025/01/07
- 引入连接池机制提高性能。
- 优化部分错误处理和日志记录。
- 代理切换机制优化。
### 2025/01/03
- 集中配置参数到配置文件中管理,提升维护便利。
- 修复部分已知BUG并提升稳定性和并发能力。
### 2025/01/02
- 重构软件结构,更加整洁易用。
- 新增支持黑白名单机制进行身份认证。
- 在使用GetIP方式的时候需要先收到一次请求才会获取代理防止每次运行都浪费资金。
- 语言配置逻辑更改不再分为两个版本通过config.ini文件中的语言配置参数进行显示。
- 配置信息面板更新,不配置账号密码的情况下也能直接复制地址使用。
- 新增docker方式部署。
### **2024/10/23**
- 重构代码结构,将部分代码分割成单独文件。
- 支持代理过程中,遇到代理服务器突然失效,自动请求更换新的代理服务器,并重置更换计时器。
### 2024/09/29
- 去除使用较少的单次循环,更换为自定义模式,可根据需求自定义更换代理的逻辑。
- 对代理有效性检测修改为异步,提高速度。
- 去除问题较多的 SOCKS4 协议的代理支持。
- 对日志系统进行美化。
- 改进异常处理逻辑。
- 增加对代理格式的校验,确保格式正确。
### 2024/09/10
- 优化并发效率,支持在未收到响应包的情况下提前进行下一个请求,提高效率。
- 增加负载均衡模式,该模式下将随机向代理地址发送请求,并利用并发代理的方式,提高请求效率。
- 代理有效性检测修改为异步,提高效率。
### 2024/09/09
- 增加功能,可设置首次启动时是否对 `ip.txt` 中的代理地址进行有效性校验,并只使用有效的代理地址。
- 函数降级,支持更低版本的 Python。
### 2024/09/03
- 增加本地 SOCKS5 监听,适配更多软件。
- 部分函数更换,适配更低版本的 Python。
- 美化回显内容。
### 2024/08/31
- 项目大结构调整。
- 美化显示,持续提示下一次更换代理地址的时间。
- 支持 `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/25
- 读取 `ip.txt` 时自动跳过空行。
- 将 `httpx` 更换为并发池,提高性能。
- 增加缓冲字典,相同站点降低延迟。
- 每次请求更换 IP 逻辑修改为随机选择代理。
- 采用更高效的结构和算法,优化请求处理逻辑。
### 2024/08/24
- 采用异步方案提高并发能力和减少超时。
- 重复代码封装,提高代码复用性。
### 2024/08/23
- 修改并发逻辑。
- 增加身份鉴别功能。
- 增加 IP 获取接口,永久更换 IP。
- 增加每次请求更换 IP 功能。

View File

View File

@ -98,4 +98,4 @@ A为了防止资源浪费通过 getip 获取的情况一般是付费购买
Q为什么我会遇到 XXX 报错?为什么不能用?
A可先看《报错排查手册》无法修复的情况下可以找作者询问提问前请先支付50元作为时间的购买费用如果您的问题属于百度可查或手册中有的费用将不会返还如果属于工具BUG或功能建议费用将全额返还并将您列入本项目的感谢名单中。实在是太多人多在问一些非常简单且写在帮助中的问题时间被极大的浪费了同时有很多态度非常恶劣的人这不是我所想要的
A可先看《排查手册》无法修复的情况下可以找作者询问提问前请先支付50元作为时间的购买费用如果您的问题属于百度可查或手册中有的费用将不会返还如果属于工具BUG或功能建议费用将全额返还并将您列入本项目的感谢名单中。实在是太多人多在问一些非常简单且写在帮助中的问题时间被极大的浪费了同时有很多态度非常恶劣的人这不是我所想要的

260
README.md
View File

@ -11,18 +11,10 @@
- [开发缘由](#开发缘由)
- [功能特点](#功能特点)
- [安装与使用](#安装与使用)
- [依赖安装](#依赖安装)
- [运行工具](#运行工具)
- [手动录入代理地址](#iptxt-手动录入代理地址)
- [配置文件](#配置文件)
- [演示效果](#演示效果)
- [使用接口自动获取代理地址](#使用接口自动获取代理地址)
- [Docker方式部署](#Docker方式部署)
- [性能表现](#性能表现)
- [免责申明](#免责申明)
- [更新日志](#更新日志)
- [开发计划](#开发计划)
- [鸣谢](#鸣谢)
- [特别鸣谢](#特别鸣谢)
- [赞助开源](#赞助开源)
- [代理推荐](#代理推荐)
@ -49,154 +41,13 @@
- **配置灵活**:通过 config.ini 文件自定义端口、模式和认证信息等。
- **版本检测**:自动检查软件更新,保证版本最新。
## 安装与使用
## 工具使用
### 依赖安装
[ProxyCat操作手册](.\ProxyCat-Manual\操作手册.md)
工具基于 Python 实现,建议使用 **Python 3.8** 以上版本。在使用前,请使用以下命令配置依赖:
## 报错排查
```bash
pip install -r requirements.txt
# 或推荐使用国内源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
### 运行工具
在项目目录下运行以下命令,查看帮助信息以确认配置成功:
```bash
python3 ProxyCat.py -h
```
回显如下信息即表示配置成功:
```
|\ _,,,---,,_ by 本间白猫
ZZZzz /,`.-'`' -. ;-;;,_
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_) ProxyCat
用法: ProxyCat.py [-h] [-c]
参数:
-h, --help 显示此帮助信息并退出
-c C 指定配置文件名(默认config.ini)
```
### ip.txt 手动录入代理地址
按照以下格式 (`socks5://127.0.0.1:7890``http://127.0.0.1:7890`),一行一个填入 `ip.txt` 文件中:
```txt
socks5://127.0.0.1:7890
https://127.0.0.1:7890
http://127.0.0.1:7890
...
```
> 如果您缺少合适的国内代理地址,且有几块钱预算,可以查看微信公众号:樱花庄的本间白猫。菜单页面长期更新,获取多家低价代理购买地址,为作者带来几毛钱的推荐收益~
### 配置文件
`config.ini`(或自定义配置文件)中配置参数:
```ini
[SETTINGS]
# 本地服务器监听端口(默认为:1080)
port = 1080
# 代理地址轮换模式cycle 表示循环使用custom 表示使用自定义模式load_balance 表示负载均衡(默认为:cycle)
mode = cycle
# 代理地址更换时间(秒),设置为 0 时每次请求都更换 IP(默认为:300)
interval = 300
# 本地服务器端口认证用户名((默认为:neko)当为空时不需要认证
username = neko
# 本地服务器端口认证密码(默认为:123456)当为空时不需要认证
password = 123456
# 是否使用 getip 模块获取代理地址 True or False(默认为:False)
use_getip = False
# 获取新代理地址的URL
getip_url = http://example.com/getip
# 代理地址列表文件(默认为:ip.txt)
proxy_file = ip.txt
# 是否启用代理检测功能 True or False(默认为True)
check_proxies = True
# 语言设置 (cn/en)
language = cn
# IP白名单文件路径留空则不启用白名单
whitelist_file = whitelist.txt
# IP黑名单文件路径留空则不启用黑名单
blacklist_file = blacklist.txt
# IP认证优先级whitelist/blacklist
# whitelist: 优先判断白名单在白名单中的IP直接放行
# blacklist: 优先判断黑名单在黑名单中的IP直接拒绝
ip_auth_priority = whitelist
```
配置对应参数后即可使用:
```bash
python3 ProxyCat.py
```
### 演示效果
**固定代理地址(默认)**
```
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
```
如果您是部署在公网,将 `127.0.0.1` 替换为您的公网IP即可。
![主界面图](./assets/主界面图.png)
### 使用接口自动获取代理地址
工具支持直接调用代理地址获取的API接口。当您配置 `use_getip = True` 时,工具将不再从本地 `ip.txt` 中读取代理地址,而是通过执行 **getip.py** 脚本来获取新的代理地址请确保您的IP已加白名单并且格式为IP:端口,每次只能使用一个代理地址)。
此时,您需要保证 **getip.py** 获取到的地址信息格式为 `IP:PORT`。默认为 `socks5` 协议,如需使用 `http`,请手动更改。
## Docker方式部署
请提前安装好Docker和Docker-compose具体安装方法可自行百度查询。
```
# 拉取项目源码到本地
git clone https://github.com/honmashironeko/ProxyCat.git
# 修改config文件夹中的config.ini中的内容
# 进入ProxyCat文件夹中并构建镜像和启动容器
docker-compose up -d --build
# 停止服务和启动服务(每次修改完配置后需要重启服务)
docker-compose down | docker-compose up -d
# 查看日志信息
docker logs proxycat
```
## 性能表现
经过实际测试在代理地址服务器性能充足的情况下ProxyCat 能够处理 **1000** 并发连接且不丢包,基本可以覆盖大部分扫描和渗透测试需求。
![性能测试图](./assets/性能测试图.png)
[ProxyCat排查手册]()
## 免责申明
@ -209,113 +60,19 @@ docker logs proxycat
## 更新日志
### 2025/01/07
- 引入连接池机制提高性能。
- 优化部分错误处理和日志记录。
- 代理切换机制优化。
### 2025/01/03
- 集中配置参数到配置文件中管理,提升维护便利。
- 修复部分已知BUG并提升稳定性和并发能力。
### 2025/01/02
- 重构软件结构,更加整洁易用。
- 新增支持黑白名单机制进行身份认证。
- 在使用GetIP方式的时候需要先收到一次请求才会获取代理防止每次运行都浪费资金。
- 语言配置逻辑更改不再分为两个版本通过config.ini文件中的语言配置参数进行显示。
- 配置信息面板更新,不配置账号密码的情况下也能直接复制地址使用。
- 新增docker方式部署。
### **2024/10/23**
- 重构代码结构,将部分代码分割成单独文件。
- 支持代理过程中,遇到代理服务器突然失效,自动请求更换新的代理服务器,并重置更换计时器。
### 2024/09/29
- 去除使用较少的单次循环,更换为自定义模式,可根据需求自定义更换代理的逻辑。
- 对代理有效性检测修改为异步,提高速度。
- 去除问题较多的 SOCKS4 协议的代理支持。
- 对日志系统进行美化。
- 改进异常处理逻辑。
- 增加对代理格式的校验,确保格式正确。
### 2024/09/10
- 优化并发效率,支持在未收到响应包的情况下提前进行下一个请求,提高效率。
- 增加负载均衡模式,该模式下将随机向代理地址发送请求,并利用并发代理的方式,提高请求效率。
- 代理有效性检测修改为异步,提高效率。
### 2024/09/09
- 增加功能,可设置首次启动时是否对 `ip.txt` 中的代理地址进行有效性校验,并只使用有效的代理地址。
- 函数降级,支持更低版本的 Python。
### 2024/09/03
- 增加本地 SOCKS5 监听,适配更多软件。
- 部分函数更换,适配更低版本的 Python。
- 美化回显内容。
### 2024/08/31
- 项目大结构调整。
- 美化显示,持续提示下一次更换代理地址的时间。
- 支持 `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/25
- 读取 `ip.txt` 时自动跳过空行。
- 将 `httpx` 更换为并发池,提高性能。
- 增加缓冲字典,相同站点降低延迟。
- 每次请求更换 IP 逻辑修改为随机选择代理。
- 采用更高效的结构和算法,优化请求处理逻辑。
### 2024/08/24
- 采用异步方案提高并发能力和减少超时。
- 重复代码封装,提高代码复用性。
### 2024/08/23
- 修改并发逻辑。
- 增加身份鉴别功能。
- 增加 IP 获取接口,永久更换 IP。
- 增加每次请求更换 IP 功能。
[更新日志记录]()
## 开发计划
- [x] 增加本地服务器身份鉴别功能,保证在公网使用过程中不被恶意盗用。
- [x] 增加每次请求更换 IP 功能。
- [x] 增加静态代理自动获取更新模块,从而永久运行。
- [x] 增加负载均衡模式,同时使用大量代理地址发送,提高并发效率,减少单一服务器负载。
- [x] 增加版本检测功能。
- [x] 增加代理地址身份鉴别支持。
- [x] 增加功能,仅在收到新请求的情况下才使用 `getip` 更新,减少 IP 消耗。
- [x] 首次启动时批量对 `ip.txt` 中的代理服务器进行有效性检查。
- [x] 增加本地监听 SOCKS 协议,或全面改成 SOCKS以适配更多软件。
- [ ] 增加详细日志记录,记录所有连接 ProxyCat 的 IP 身份,支持多用户。
- [ ] 增加Web UI提供更加强大易用的界面。
- [x] 增加docker一键部署简单易用。
- [ ] 开发 babycat 模块,可将 babycat 在任意服务器或主机上运行,即可变成一台代理服务器。
如果您有好的创意或在使用过程中遇到bug请通过以下方式联系作者反馈
微信公众号:**樱花庄的本间白猫**
## 鸣谢
## 特别鸣谢
本排名不分先后,感谢为本项目提供帮助的师傅们。
@ -326,8 +83,6 @@ docker logs proxycat
- qianzai千载
- ziwindlu
![Star History Chart](https://api.star-history.com/svg?repos=honmashironeko/ProxyCat&type=Date)
## 赞助开源
开源不易,如果您觉得工具不错,或许可以试着赞助一下作者的开发哦~
@ -340,3 +95,4 @@ docker logs proxycat
- [各大运营商流量卡](https://172.lot-ml.com/ProductEn/Index/0b7c9adef5e9648f)
- [国外匿名代理](https://www.ipmart.io?source=Shironeko)
![Star History Chart](https://api.star-history.com/svg?repos=honmashironeko/ProxyCat&type=Date)