proxyman
Proxyman
Proxyman
安装
和 Charles 对比
- 从流畅度、功能引导等方面,Proxyman 是比 Charles 好用的;Charles 在请求到非常大的响应体时,会卡住。
- 除了以上介绍到的功能,还有很多更强大更全面的功能。例如远程映射、保存会话、GraphQL 调试、黑名单白名单、Protobuf、自定义脚本等等。
Mac OS 破解
如果是 10.11 后,需要运行允许任何来源的 App
Mac v 5.17.0 破解版 (2025 年 04 月 03 日可用):
Proxyman
基本功能
Proxy List
- 支持从 Charles 导入配置
- 支持通配符
*
和?
- 支持选择具体的 APP
- 支持某个域名
- 支持导出
导出请求和响应数据
选中具体的请求,点击鼠标右键,选择导出,然后再选择你要导出的格式:
不过这里导出的 Proxyman 日志需要使用 Proxyman 才能打开,也就是说,需要想查看这条请求的人的电脑上也安装 Proxyman,如果他没有安装,也可以选择拷贝 cURL
。
Request/Response Previewer 请求/响应预览器
安装证书并在域或客户端上启用 HTTP 响应
后,您的网络流量将立即显示在 Proxyman 窗口内,默认分为三个主要区域:
正文内容预览器
取决于 Request 或 Response 的内容是什么:Proxyman 会自动显示在单独的选项卡中:
- Header:所有表头(键值表)
- Cookies :标头中的Cookie 键
- Auth :标头中的身份验证密钥
- Body : 消息正文:Proxyman 根据Content-Type 自动格式化和美化正文内容,例如 JSON、PNG、GIF、Raw Data、…
- Query:如果请求有查询,则显示所有查询。
- Raw:原始 HTTP 消息。
- Protobuf 消息
- 消息包
- 多部分/表单数据
自定义预览器
- 将 BODY 格式化为JSON ,但 Content-Type 不是 application/json
- 将正文格式化为Protobuf,但 Content-Type 不是 application/x-protobuf
- 在 Web 视图上呈现 HTML 页面
- 美化缩小文件(HTML、CSS、JS)
- 多部分/表单数据
- 尝试将正文格式化为所选类型,而不管 Content-Type
- 将消息包 (msgpack) 转换为 JSON
- 生成器到 Swift、Node、Javascript、cURL……
- GraphQL 查询更漂亮
Body 预览器
Body 预览器会自动美化内容并提供方便的次要功能:
- Tree View : 以 Tree View 模式表示 JSON
- Hex: 以十六进制格式显示正文
- 仅导出正文:能够将您的正文内容导出到文件。适用于原始数据或二进制数据
- 打开方式:您可以使用您喜欢的编辑器打开正文内容。Sublime Text 是 mime
Treeview
Proxyman 支持原生 JSON 树视图模式,它显示一个 JSON Body。它允许开发人员:
SSL Proxying
Proxyman 默认不解析 HTTPS 流量,需打开 SSL 代理配置,并添加过滤规则,只有添加了规则的域名或应用才会自动解析,默认只能添加 5 条规则,超过 5 条或无限制需付费。
Proxyman 可以用作中间人,记录您的应用程序和 SSL Web 服务器之间的所有HTTP/HTTPS流量。Proxyman 将动态地即时生成证书,这使开发人员能够以纯文本形式查看 HTTPS 。
您可以为以下方面定义规则:
- 包含列表 (Include List):拦截来自应用程序/域的流量,如果它在包含列表中
- 排除列表 (Exclude List):忽略来自排除列表中的应用程序/域的所有流量
如何在特定域或应用程序上启用 SSL 代理(两种方式)
证书配置
为了拦截加密的 HTTPS 消息(请求或响应),您必须在当前计算机上安装Proxyman CA 证书。 此步骤对于 iOS、Android 设备、iOS 模拟器、Java VM 和 Firefox 也是强制性的。
手机
手机端通过证书菜单 ->在 IOS 或 Android 上安装证书,然后根据提示在所连接的 Wi-Fi 修改代理 IP 和端口,访问 http://proxy.man/ssl
即可下载 proxyman 的证书,安装即可。
Proxyman 针对 iOS 开发还提供了一种无配置的方案,可以直接通过 Pod 或者 SPM 添加 atlantis-proxyman
框架,这样可以在不进行任何配置的情况下进行代理监听:
Windows
自动代理,安装证书
Mac
以 Mac 端配置为例:
- Certificate→Install Certificate on this Mac
- 安装成功后,可以在设置中查看是否已安装,标号 1 代表安装成功,标号 2 或 3 可查看代理端口号
- 证书安装配置完成后,通过浏览器访问相关页面(需开启 Proxyman)即可看到抓包信息了
Import and Export settings
Import
Export
Proxyman 没有一个能导出所有配置的选项,只能一个个去导出。
Proxyman
高级功能
Wildcard 和 Regex 通配符和正则表达式
Wildcard 通配符
通常仅支持少量特殊符号(如 *
和 ?
)。
*
:匹配任意数量的任意字符(包括 0 个字符)。?
:匹配单个任意字符。- 示例:
*.jpg
:匹配所有以.jpg
结尾的文件名(如photo.jpg
,image.jpg
)。file?.txt
:匹配file1.txt
,fileA.txt
,但不匹配file10.txt
。
Regex 正则
支持丰富的符号和规则,如:
.
:匹配任意单个字符(类似通配符的?
)。*
:表示前一个字符重复 0 次或多次(注意:与通配符的*
含义不同)。+
:前一个字符重复 1 次或多次。[]
:字符类(如[a-z]
匹配任何小写字母)。^
和$
:匹配字符串的开始和结束。\d
:匹配数字,\w
匹配单词字符等。- 示例:
^user\d+@example\.com$
:匹配以user
开头、后接至少一个数字,并以@example.com
结尾的邮箱(如user123@example.com
)。.*\.jpg$
:匹配所有以.jpg
结尾的字符串(类似通配符的*.jpg
)。
Map 映射
Map Local
参考:[Map Local (File) | Proxyman Documentation](https://docs.proxyman.com/advanced-features/map-local) |
Map Local (File)
Map Local (Directory)
指定一个目录,存放和请求一样的资源,优先本地,没有的话走远端网络
Map Local 设置 delay 时间
Map Local with Scripting Tool
Map Remote
参考:[Map Remote | Proxyman Documentation](https://docs.proxyman.com/advanced-features/map-remote) |
疑惑
Map Local 和 Map Remote 能同时生效吗?
Charles
是可以的同时生效的Proxyman
不行,Proxyman
同时设置,只有 Map Local 生效- Map Local 和 Script 可以同时生效
Edit and Repeat 编辑并重发请求
对于需要直接在 Proxyman 应用程序上测试 Endpoint 而无需从浏览器或客户端应用程序发出新请求的开发人员来说,Edit & Repeat
是一个方便的工具。
选择请求→右键 Edit And Repeat
Compose Request 编辑新的请求
Proxyman 可以同 Postman 或 ApiPost 等工具一样新建请求,填写请求头及请求参数进行 GET、POST 等请求,调试验证接口。
通过主界面 Tools
-> Compose Request
,进入接口编辑窗口进行网址、请求方法、参数等信息的填写,并确定发送请求
Code Generator 代码生成
可帮助你自动生成针对特定代码语言的 HTTP/HTTPS 请求
Breakpoint 断点
断点是一种方便的工具,可帮助开发人员动态编辑请求和响应的内容。可以在请求或响应上设置断点。
- 修改请求 URL,包括 Scheme、Host、Path、Port、HTTP Method(适用于 Proxyman 2.35.4+)
- 修改请求/响应的 HTTP 标头
- 修改请求中的查询或表单条目
- 修改 Authorization/Cookie/Set-Cookie 标头
- 修改请求/响应的 HTTP 正文
- 更改响应 HTTP 状态代码
右键单击请求 -> Tools
-> Breakpoint
Network Conditions 模拟弱网
点击顶部菜单栏,选择 Tools
-> Network Conditions
,可以打开一个新页面,然后点击左下角为一个新的域名添加网络状况,这里可以根据你的需求选择不同的网络状况:
No Caching 无缓存
阻止 Http 缓存。
Reverse Proxy(反向代理)
Proxyman 中的 Reverse Proxy(反向代理) 是一个强大的功能,主要用于将外部请求(如来自移动端、浏览器或其他客户端的请求)透明地转发到开发者指定的本地或远程服务器,同时允许拦截、分析和修改这些请求与响应。它的核心作用是为开发调试、测试和问题排查提供灵活的控制权。
Scripts 自定义脚本
基础
Proxyman 提供了脚本功能,开发人员可以编写 JS 代码以灵活的方式操作 Request/Response。
- 通过 JS 代码实现 Map Local / Map Remote / Breakpoint。快 100 倍
- 更改请求内容,包括 Domain、Host、Scheme、Port、Path、HTTP Method、HTTP Headers、Query、Body (Encoded-Form、JSON、plain-text)
- 更改响应内容,包括 HTTP Status Code、HTTP Headers、Body(JSON、Encoded-Form、plain-text、binary…)
- 为常见任务提供大量内置插件和库,例如散列、编码/解码、JSON- 文本转换器、美化……
- 能够编写自己的 JS 插件或库
- 旨在取代 Charles Proxy 的 Rewrite GUI Tool
- 使用 ShareState 或环境在每个脚本或当前会话之间分配和接收共享状态
多个符合条件 script,只会命中第一个 script 脚本
应用
实现 mapLocal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
async function onRequest(context, url, request) {
// 匹配需要映射的请求路径
if (request.path === "/api/data") {
// 读取本地文件(路径需为绝对路径)
const fileContent = context.readFile("/Users/YourName/mock_data.json");
// 返回自定义响应
return {
statusCode: 200,
header: {
"Content-Type": "application/json",
"X-Mocked-By": "Proxyman"
},
body: fileContent
};
}
// 其他请求正常放行
return request;
}
实现 mapRemote
映射到 gray01
环境
1
2
3
4
5
6
7
8
9
10
11
async function onRequest(context, url, request) {
// Use production URL
request.scheme = "https";
request.host = "api-service-gray01.xxx.com";
request.port = 443;
return request;
}
async function onResponse(context, url, request, response) {
response.color = "purple";
return response;
}
购物车应用
- 对 request 和 response 添加 comment 和 color
- 将 response 保存到磁盘
- 购物车接口很庞大
- 分不同部分保存
- 对商品行的数据根据商品名进行重命名,方便定位,加上 index 和其他前缀