如何用 Reverse Proxy 抓取不支持 HTTP 代理的应用流量
本文演示如何使用 Reverse Proxy 工具,抓取不支持 HTTP 代理的应用或客户端的 HTTP/HTTPS 流量。
Reverse Proxy 要解决什么问题?
如果你的应用或客户端默认不支持 HTTP 代理,Proxyman 就无法抓取其流量。
以下列表举例说明了哪些库不支持 HTTP 代理,或者需要额外配置才能使用:
- cURL
- NodeJS 中的
fetch或axios, - Python 库中的
request - Android TV 盒子
- 嵌入式设备
- 老旧的网络 C 库
- ...
使用 Reverse Proxy,就有可能实现抓取。
使用方法
前提条件
- 你的应用或客户端不支持 HTTP 代理
- Proxyman 无法抓取你的应用或客户端的任何流量
- 你可以访问应用或客户端的源代码
为便于演示,我将使用 cURL 命令行。
默认情况下,cURL 不使用代理,因此 Proxyman 无法抓取其流量。
我们选择 cURL 只是出于演示目的。你也可以使用参数 --proxy localhost:9090,让 cURL 直接使用代理,而无需借助 Reverse Proxy 工具。

- 假设你的服务器是 https://producthunt.com
- 打开 Proxyman -> Tools 菜单 -> Reverse Proxy
- 使用以下信息创建一条新规则
- Name: Map to Production
- Local Port: 10000
- Remote Host:
<your real server> - Remote Port: 443 (HTTPS)

- 点击 Save 保存
- 打开应用或客户端的源代码 -> 将 Base URL 改为
localhost:10000 - 启动你的应用或客户端
- 在 Proxyman 中查看流量

如图所示,即使不使用 --proxy localhost:9090 参数,Proxyman 也能抓取 cURL 的流量。
- 如果你想使用 HTTPS,请使用
https://localhost:10000 - 如果你想使用 HTTP,请使用
http://localhost:10000
总结
有些应用默认不支持 HTTP 代理,因此 Proxyman 可能无法抓取其流量。不过,使用 Reverse Proxy 可以帮你解决这个问题。
如果客户端支持,请优先尝试显式代理设置或 Proxyman Automatic Setup。当你可以修改客户端的 Base URL 但无法设置代理时,再选择 Reverse Proxy。请确保本地端口未被占用;只有当远程服务器需要原始的 Host 请求头时,才启用 Preserve Host,因为不匹配的值可能导致服务器拒绝请求。
希望这篇短文能帮你保持条理清晰。祝编码愉快!👨🚀
Proxyman 是一款高性能的 macOS 应用,可用于抓取和检查来自 iOS 设备、iOS 模拟器和 Android 设备上的应用及域名的 HTTP(s) 流量。
前往 https://proxyman.com/ 获取。

Noah Tran