← 返回信息流
AI 资讯Hacker News·2 小时前

Show HN: Oproxy 让你直接在浏览器中检查修改网络流量

原标题:Show HN: Oproxy – inspect and modify network traffic from the browser

速览

Oproxy 是一个开源项目,旨在让用户能够直接在浏览器环境中检查和修改网络流量。它通过拦截和重定向请求,为开发者提供了调试网络问题的便捷方式。该工具简化了传统网络抓包流程,提升了开发效率。

AI 深度解读

Show HN: Oproxy – 从浏览器检查与修改网络流量

背景

在现代软件开发和测试流程中,网络流量的捕获、分析与修改是不可或缺的一环。开发者经常需要调试浏览器行为、CLI 工具、移动应用、API 客户端以及微服务架构中的各个组件。然而,现有的流量代理工具(如 Charles、Fiddler 或 mitmproxy)虽然功能强大,但往往存在配置复杂、资源占用高或难以集成到自动化测试流程中的问题。

特别是在本地开发环境中,开发者通常需要在自己的机器或 Docker 容器内运行测试套件,这就要求代理工具具备轻量级、易部署且功能全面的特点。此外,随着 AI 辅助编程的兴起,将自然语言交互引入网络流量调试成为新的趋势,旨在降低调试门槛并提高分析效率。

oproxy 正是在这一背景下诞生的开源项目。它定位为一款本地 HTTP、HTTPS 和 SOCKS5 代理,专为开发者设计,旨在提供从流量捕获、检查、重放到修改的全链路能力,并创新性地集成了基于 OpenAI 兼容模型的 AI 助手,以增强对代理状态的理解和变更准备。

核心内容

oproxy 是一个基于 Rust 构建的本地代理工具,支持 HTTP、HTTPS 和 SOCKS5 协议。其核心设计理念是服务于开发者在本地机器或 Docker 容器中进行浏览器、CLI、移动应用、API 客户端及服务测试的需求。

功能特性详解

  1. 全面的流量捕获与检查

    • 支持捕获 HTTP 流量。
    • 在信任本地 oproxy CA(证书颁发机构)后,可捕获 HTTPS 流量。
    • 提供详细的视图,展示请求、响应、头部(Headers)、主体(Bodies)、状态码、耗时、标签、备注以及选定的检查器数据。
  2. 流量重放与构建

    • 重放(Replay):可以重放捕获的请求,并在 Compose 界面中打开进行详细分析。
    • 手动构建:支持手动构建请求,包括设置头部、查询参数、认证信息、原始主体、变量、集合以及导出为 cURL 命令。
  3. 强大的流量修改能力

    • 提供规则集、远程映射(map-remote)、本地映射(map-local)、访问控制规则、节流(throttling)、断点(breakpoints)、模拟响应(mock responses)、DNS 覆盖(DNS overrides)、捕获过滤器、Lua 脚本支持以及上游代理链式调用等功能,允许开发者对流量进行细粒度的控制和修改。
  4. AI 辅助调试

    • 集成经过身份验证的 AI 助手,该助手基于 OpenAI 兼容的聊天模型。
    • 助手可以检查代理状态,并通过自然语言交互帮助开发者准备和确认代理变更,从而简化复杂的调试过程。
  5. 数据导出与导入

    • 支持将捕获的数据导出为 HAR 格式,或生成 cURL、Fetch API 调用片段和 Python 代码片段。
    • 支持导入 HAR 文件和 oproxy 特有的 JSON 会话数据。
    • 默认情况下,导出的内容会进行脱敏处理以保护隐私。
  6. 高级协议支持

    • 当捕获到匹配流量时,oproxy 能够检查 JWT、GraphQL、gRPC 和 WebSocket 帧的元数据,为现代应用协议提供深度调试支持。
  7. 部署与配置

    • Docker 部署:提供官方 Docker 镜像,支持持久化卷存储 CA 材料和本地状态。
    • 源码构建:要求 Rust 1.85+、Node.js 22+ 以及通过 Corepack 管理的 Yarn。
    • 网络监听
      • 作为正向 HTTP 代理监听(默认端口 8080)。
      • 在同一监听器上提供本地管理 UI 和 API。
      • 启用 MITM 时拦截 HTTPS CONNECT 流量。
      • 可选监听 SOCKS5 CONNECT 流量和额外的 TLS 监听端口。
  8. 会话管理

    • 在内存中捕获实时会话,并限制会话和主体的保留量以优化资源使用。
    • 通过管理端点显式保存和加载会话。
    • 使用服务器发送事件(SSE)流式传输会话变更通知。

使用示例

  • Docker 运行

    docker run --rm \
    --name oproxy \
    -p 127.0.0.1:8080:8080 \
    -p 127.0.0.1:1080:1080 \
    -e OPROXY_BIND_HOST=0.0.0.0 \
    -e OPROXY_MITM_ENABLED=true \
    -v oproxy-certs:/app/certs \
    -v oproxy-storage:/app/storage \
    ghcr.io/sauravrao637/oproxy:latest
    

    随后访问 http://127.0.0.1:8080 即可使用。

  • HTTPS 捕获配置

    1. 下载 CA 证书:curl -x http://127.0.0.1:8080 http://example.com
    2. 安装 CA 证书到浏览器或操作系统信任存储区。
    3. 使用证书访问 HTTPS 站点:curl --cacert oproxy-ca.crt -x http://127.0.0.1:8080 https://example.com

关键要点

  • 全协议支持:不仅支持标准的 HTTP/HTTPS,还原生支持 SOCKS5,并具备解析 JWT、GraphQL、gRPC 和 WebSocket 元数据的能力,适应现代复杂的网络环境。
  • AI 集成创新:通过集成 OpenAI 兼容的 AI 助手,oproxy 将传统的命令行或 GUI 调试转化为自然语言交互,降低了高级代理功能(如规则编写、状态检查)的使用门槛。
  • 灵活的流量修改:提供从简单的 DNS 覆盖、本地映射到复杂的 Lua 脚本和上游代理链式调用,满足从简单模拟到复杂网络条件模拟的各种测试需求。
  • 开发者友好部署:提供 Docker 镜像和源码构建两种主要方式,且 Docker 配置中包含了持久化卷,确保 CA 证书和会话数据在容器重启后依然可用。
  • 丰富的导出格式:支持 HAR、cURL、Fetch 和 Python 代码片段的导出,便于将调试结果直接集成到测试脚本或开发文档中。
  • 轻量级与高性能:基于 Rust 构建,保证了代理工具的高性能和低资源占用,适合在本地开发环境中长期运行。
  • MIT 开源协议:采用宽松的 MIT 许可证,允许商业和私有项目自由使用、修改和分发。

意义与影响

oproxy 的出现填补了轻量级、AI 增强的本地网络代理工具的市场空白。对于前端开发者而言,它提供了无需修改应用代码即可调试浏览器或 CLI 请求的能力,极大地简化了前后端联调过程。对于后端和测试工程师,其强大的流量修改和模拟功能使得构建隔离的测试环境、复现特定网络条件(如延迟、带宽限制)以及验证客户端对异常流量的处理变得更加容易。

此外,oproxy 对 AI 助手的集成代表了开发工具智能化的一个新方向。通过自然语言交互来管理复杂的代理规则和分析流量状态,不仅提高了工作效率,也使得非资深开发者能够更轻松地利用高级网络调试技术。随着微服务架构和复杂 API 交互的普及,此类具备深度协议解析和智能辅助能力的工具将在软件开发生命周期中扮演越来越重要的角色。

查看原文 →github.com