proxy.py:一个能替代 ngrok 的轻量级代理服务器

proxy.py:一个能替代 ngrok 的轻量级代理服务器 文章目录proxy.py一个能替代 ngrok 的轻量级代理服务器1、 这个项目解决什么问题2、 核心能力3、 安装和使用4、 插件系统5、 其他功能6、 适合什么场景proxy.py一个能替代 ngrok 的轻量级代理服务器proxy.py 在 GitHub 上拿到了 3,534 Star。这是一个用 Python 写的代理服务器功能很全——HTTP/HTTPS 代理、反向代理、WebSocket 支持、TLS 拦截还自带一个叫 GROUT 的功能能替代 ngrok 做内网穿透。1、 这个项目解决什么问题做过内网穿透的人大概都用过 ngrok。ngrok 好用但免费版有限制付费版价格不低。proxy.py 里的 GROUT 模块就是干这个的——把本地服务暴露到公网不需要额外付费。除了内网穿透proxy.py 本身是一个完整的代理服务器。你可以用它做流量抓包、API Mock、请求过滤、缓存加速甚至搭建一个带 Web 界面的代理服务。2、 核心能力性能方面proxy.py 用 asyncio 做了无阻塞处理能跑满所有 CPU 核心。官方给的测试数据在 MacBook Pro M2 上100 并发连接每秒能处理 5 万多个请求成功率 100%。内存占用只有 5 到 20 MBDocker 镜像压缩后 25 MB 左右。协议支持比较全HTTP、HTTPS、HTTP/2、WebSocket 都能处理。还能配置 HAProxy 协议支持 IPv4 和 IPv6。可编程是它的卖点之一。proxy.py 的架构是插件式的你想改代理行为写个插件就行。比如做请求过滤、缓存响应、修改 Header、模拟 API 返回都有现成的插件示例。安全方面支持端到端加密和 TLS 拦截。你可以解密客户端和上游服务器之间的 HTTPS 流量用来调试或者审计。还内置了 Cloudflare 的 DNS-over-HTTPS能绕过基于 DNS 的封锁。3、 安装和使用用 pip 装pipinstall--upgradeproxy.py装完直接在命令行输入proxy就能启动默认监听 8899 端口。proxy想用 Docker 也行dockerrun-it-p8899:8899--rmabhinavsingh/proxy.py:latest启动后把浏览器或系统的代理设置成127.0.0.1:8899所有流量就会经过 proxy.py。如果想开 GROUT 做内网穿透加上对应参数就行。具体用法看文档里的 GROUT 章节。4、 插件系统proxy.py 的插件分几种类型HTTP 代理插件拦截和修改经过代理的请求。比如CacheResponsesPlugin做缓存FilterByUpstreamHostPlugin按域名过滤MockRestApiPlugin模拟 API 返回。Web 服务器插件让 proxy.py 本身也能当 Web 服务器用。反向代理插件把请求转发到后端服务。加载插件很简单启动时用--plugins参数指定就行proxy--pluginsproxy.plugin.CacheResponsesPlugin5、 其他功能proxy.py 还带了一个实时 Dashboard用--enable-dashboard启用后访问http://localhost:8899/dashboard能在线查看和修改代理配置。支持 Chrome DevTools Protocol可以在 Chrome 开发者工具里直接看代理的请求详情。有 Prometheus 指标导出方便接入监控系统。支持静态文件服务用--enable-static-server启用后可以当个简易文件服务器。6、 适合什么场景需要内网穿透但不想付 ngrok 费用的开发者做接口调试、流量抓包、安全测试的人需要搭建带缓存、过滤功能的代理服务在做 AI Agent 或爬虫需要控制 HTTP 请求的场景proxy.py 是纯 Python 实现没有外部依赖跨平台支持 macOS、Ubuntu、Windows甚至能在 Android 和 iOS 上跑。proxy.py 是纯 Python 实现没有外部依赖跨平台支持 macOS、Ubuntu、Windows甚至能在 Android 和 iOS 上跑。