pproxy:用 Python 构建强大的异步隧道代理

厌倦了为各种代理协议和功能寻找不同的工具?pproxy 应运而生!这是一个基于 Python 3 asyncio 实现的异步隧道代理工具,支持 HTTP、HTTP2、HTTP3、Socks4、Socks5、Shadowsocks、ShadowsocksR、SSH、Redirect、Pf 等多种协议,并支持 TCP 和 UDP 流量。

pproxy 的目标是提供一个轻量级、纯 Python 实现的强大代理解决方案,无需额外依赖库。它具备丰富的功能,包括:

  • 支持多种协议: 涵盖主流代理协议,满足不同场景需求。
  • 异步 IO: 基于 asyncio 实现单线程异步 IO,性能高效。
  • TCP/UDP 代理客户端/服务器: 可作为代理客户端或服务器使用,灵活配置。
  • 负载均衡: 支持在多个远程服务器之间进行流量调度。
  • 流量自动检测: 智能识别并处理不同的入站流量。
  • 隧道、跳跃和反向跳跃: 支持多级代理和反向连接。
  • Unix 域套接字支持: 提供更安全的本地通信方式。
  • HTTP v2 和 v3 (QUIC) 支持: 紧跟最新的网络协议。
  • 认证支持: 提供用户/密码认证功能。
  • 基于正则表达式的域名过滤: 精细控制流量走向。
  • SSL/TLS 客户端/服务器: 支持加密连接。
  • Shadowsocks OTA 和 SSR 插件: 增强 Shadowsocks 功能。
  • 流量统计: 提供带宽和流量使用统计。
  • PAC 支持: 支持 JavaScript 自动代理配置。
  • NAT 重定向: 支持 Iptables 和 Pf 的 NAT 重定向。
  • 系统代理自动设置: 方便地配置操作系统代理。
  • 客户端/服务器 API: 可集成到其他 Python 项目中。

快速入门

安装 pproxy 非常简单,使用 pip 即可:

pip3 install pproxy

安装完成后,可以直接运行 pproxy 启动默认配置的代理服务器:

pproxy

默认情况下,pproxy 会在 8080 端口监听 HTTP、Socks4 和 Socks5 协议。

你也可以指定监听协议,例如启动 Shadowsocks 代理服务器:

pproxy -l ss://chacha20:abc@:8080

为了获得更好的加密性能,可以安装 pycryptodome

pip3 install pproxy[accelerated]

pproxy 也提供了 Docker 镜像,方便快速部署:

docker run -it -p 8080:8080 mosajjal/pproxy:latest -l http://:8080 -vv

强大的 URI 配置

pproxy 使用简洁灵活的 URI 语法进行配置,格式如下:

{scheme}://[{cipher}@]{netloc}/[@{localbind}][,{plugins}][?{rules}][#{auth}]

你可以通过组合不同的 scheme 来同时启用多种协议,例如 http+socks4+socks5://cipher 支持多种加密算法,并且可以通过 PyPy 或 pycryptodome 进行性能优化。netloc 指定监听地址和端口或 Unix 域套接字路径。localbind 可以指定出站流量使用的本地 IP 地址。plugins 用于启用特定的 ShadowsocksR 插件。rules 可以指定一个包含正则表达式规则的文件,用于匹配并重定向流量。auth 用于配置用户认证。

pproxy 还支持通过 __ 连接多个 URI 来实现代理跳跃,例如 ss://server1__http://server2

多样的应用场景

pproxy 凭借其丰富的功能和灵活的配置,可以应用于多种场景:

  • 科学上网: 支持多种加密协议,提供安全稳定的代理连接。
  • 内网穿透: 通过反向跳跃功能实现对内网服务的访问。
  • 流量转发: 将特定流量重定向到其他代理服务器。
  • 负载均衡: 在多个后端代理服务器之间分发流量。
  • 流量分析和过滤: 利用正则表达式规则进行流量控制。
  • 自定义代理逻辑: 提供客户端/服务器 API,方便集成到其他应用中。

除了命令行工具,pproxy 还提供了 Python API,方便开发者集成代理功能到自己的项目中。

如果你正在寻找一个功能强大、灵活且易于使用的 Python 代理工具,pproxy 绝对值得尝试。访问其 GitHub 页面获取更多详细信息和示例:https://github.com/qwj/python-proxy