Proxy.py 是一个强大且灵活的网络代理工具,它能让你轻松构建自己的定制化代理服务器,满足各种网络需求。它以其快速、可扩展、可编程的特点而闻名,并且提供各种功能,例如:
强大的功能
• 快速且可扩展: 充分利用系统所有核心,并支持使用 asyncio 实现无线程执行,轻松处理数万个连接每秒。
• 轻量级: 仅占用 5-20 MB 的内存,无内存泄漏,启动后即可运行,无需重启。
• 可编程: 通过插件 API 定制代理行为,例如实现代理池、短链接、数据修改等。
• 多地址、多端口: 可监听多个地址和端口,并通过配置选择所需的网络接口。
• 实时仪表盘: 支持实时监控和配置代理服务器,并提供 Chrome DevTools 协议支持。
• 安全和私密: 支持端到端加密,保护客户端与代理服务器之间的通信安全,并提供 DNS-over-HTTPS 功能保护用户隐私。
• 中间人攻击: 支持解密客户端与上游服务器之间的 TLS 通信,用于安全审计、调试等目的。
• 支持多种协议: 支持 HTTP(s)、HTTP1、HTTP1.1、HTTP2、WebSocket 以及 HAProxy 协议。
使用 PIP安装
• 稳定版本:
• 从 PyPi 安装:
pip install --upgrade proxy.py
• 从 GitHub 主分支安装:
pip install git+https://github.com/abhinavsingh/proxy.py.git@master
• 开发版本:
pip install git+https://github.com/abhinavsingh/proxy.py.git@develop
使用 Docker
• 多平台容器:
• Docker Hub: 最新标签指向最新稳定版本
docker pull abhinavsingh/proxy.py:latest
• GitHub 容器注册表 (GHCR): 最新标签指向最新开发版本
docker pull ghcr.io/abhinavsingh/proxy.py:latest
从 Docker Hub 运行稳定版本
docker run -it -p 8899:8899 --rm abhinavsingh/proxy.py:latest
从 GHCR 运行开发版本
docker run -it -p 8899:8899 --rm ghcr.io/abhinavsingh/proxy.py:latest
启动 proxy.py
从命令行运行(使用 PIP 安装)
使用 PIP 安装 proxy.py 后,一个名为 proxy 的可执行文件会被放置在你的 $PATH 中。
运行:
只需在命令行中键入 proxy 即可使用默认配置启动。
proxy
TLS 拦截
默认情况下,proxy.py 不会解密客户端与服务器之间的 HTTPS 流量。要启用 TLS 拦截,需要生成根 CA 证书,并使用相应的标志启动 proxy.py。
使用 Docker 运行 Grout
docker run --rm -it \
--entrypoint grout \
-v ~/.proxy:/root/.proxy \
abhinavsingh/proxy.py:latest \
http://host.docker.internal:29876
嵌入 proxy.py
阻塞模式
使用 proxy.main 方法以嵌入模式启动 proxy.py,并使用默认配置。例如:
import proxy
if __name__ == '__main__':
proxy.main()
通过传递 kwargs 可以自定义启动标志。例如:
import ipaddress
import proxy
if __name__ == '__main__':
proxy.main(
hostname=ipaddress.IPv6Address('::1'),
port=8899
)
非阻塞模式
使用 Proxy 上下文管理器以非阻塞嵌入模式启动 proxy.py,并使用默认配置。例如:
import proxy
if __name__ == '__main__':
with proxy.Proxy() as p:
# 在这里实现你的应用程序逻辑
proxy.sleep_loop()
总结
总之,Proxy.py 是一个功能强大且灵活的网络代理工具,它能够满足各种网络需求,从简单的 HTTP 代理到更高级的 TLS 拦截和自定义插件开发。它以其快速、可扩展、可编程的特点而闻名,并提供了丰富的功能和工具来帮助你构建自己的定制化代理服务器,满足各种网络场景下的需求。无论你是开发者、安全研究人员还是普通用户,Proxy.py 都能为你提供强大且灵活的网络代理解决方案。
项目地址:https://github.com/abhinavsingh/proxy.py