# http-divert-proxy **Repository Path**: usedel/http-divert-proxy ## Basic Information - **Project Name**: http-divert-proxy - **Description**: 一个 Windows 本机 HTTP 透明转发工具,用 Rust 编写。它通过 WinDivert 捕获本机发出的明文 HTTP 流量,将命中的 TCP 连接重定向到本地透明监听器,再把 HTTP/1.1 请求转换为标准代理可识别的 absolute-form 并转发到你的上游代理服务,便于抓包软件捕获不走系统代理的 HTTP 包。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # http-divert-proxy 一个 Windows 本机 HTTP 透明转发工具,用 Rust 编写。它通过 WinDivert 捕获本机发出的明文 HTTP 流量,将命中的 TCP 连接重定向到本地透明监听器,再把 HTTP/1.1 请求转换为标准代理可识别的 absolute-form 并转发到你的上游代理服务,便于抓包软件捕获不走系统代理的 HTTP 包。 ## 能力范围 - 默认拦截 IPv4 TCP 80 端口的明文 HTTP 流量。 - 支持配置上游代理地址、本地透明监听地址、拦截端口和日志级别。 - 支持全局模式:捕获范围内的 HTTP/HTTPS 请求都走上游代理;`intercept_ports = "*"` 时会捕获所有 TCP 并只代理识别到的 HTTP/HTTPS。 - 自动排除本地监听端口和上游代理连接,降低循环转发风险。 - 不做 HTTPS 解密,不处理 HTTP/3、QUIC、TLS MITM 或证书安装。 ## 前置要求 1. Windows 管理员终端运行。 2. 安装 Rust stable。 3. 下载 WinDivert,并将 `WinDivert.dll` 与 `WinDivert64.sys` 放到可执行文件同目录,或放入 `PATH` 可找到的位置。 4. 确保你的抓包代理服务已经启动,例如监听 `127.0.0.1:8080`。 ## 配置 复制示例配置: ```powershell Copy-Item config.example.toml config.toml ``` 示例: ```toml [upstream_proxy] host = "127.0.0.1" port = 8080 [local_listen] host = "127.0.0.1" port = 18080 # 指定端口:[80, 443];全端口 HTTP/HTTPS:"*" intercept_ports = [80, 443] log_level = "info" flow_ttl_secs = 300 dry_run = false [filter] global_mode = true ``` ## 运行 ### 编译 编译时 `build.rs` 会自动将 `WinDivert.dll` / `WinDivert64.sys` 复制到 `target//` 目录,无需手动拷贝。 ### CLI 命令行模式(默认) ```powershell cargo run --release -- --config config.toml ``` 命令行覆盖配置: ```powershell cargo run --release -- --upstream 127.0.0.1:8080 --listen 127.0.0.1:18080 --intercept-port 80 ``` 只检查配置: ```powershell cargo run -- --config config.toml --dry-run ``` ### GUI 图形界面模式 ```powershell cargo build --features gui --release target\release\http-divert-proxy.exe ``` 或一步运行: ```powershell cargo run --features gui --release ``` GUI 模式下通过图形界面完成以下操作,无需命令行参数: - **仪表盘**:查看代理状态、实时日志 - **基础设置**:配置上游代理地址、本地监听地址、拦截端口 - **过滤规则**:管理流量拦截与转发规则 - **进程列表**:查看当前被拦截的进程信息 启动/停止代理均在界面内操作。关闭窗口时会弹出确认对话框。 ## 注意事项 - 仅用于你自己的电脑或已授权环境的调试抓包。 - 某些安全软件可能阻止 WinDivert 驱动加载。 - 上游代理必须支持普通 HTTP 代理请求,即请求行形如 `GET http://example.com/path HTTP/1.1`。 - 如果应用使用 HTTPS、证书固定、私有协议或 QUIC,本工具不会解密或转换这些流量。