1、为什么会选择Proxyman?
Proxyman比较适合 QA、前端、iOS、Android 开发人员、安全开发人员。基础功能可以免费使用,支持完整的调试功能。如果需要使用具有完整调试功能的包分析器的开发人员,可以考虑使用 Charles Proxy。如果需要一套完整的代理工具来深入研究网络底层,可以尝试Wireshark 或者 Fiddler 。
2、Proxyman支持的功能
- 截取 Http 和 Https 网络封包。
- 共享 HTTP(s) 请求和响应。
- 支持重发网络请求,方便调试。
- 支持修改网络请求参数。
- 内置工具轻松操作 HTTP(s) 请求和响应,例如 Map Local、Map Remote、Breakpoint、Scripting…
3、测试时,哪些场景可以用到Proxyman?3.1 通过Map Local,Mock数据
3.1.1 原理:

From:https://proxyman.io/posts/2019-08-03-map-local-feature
3.1.2 Map Local 编辑接口
(注:Proxyman 中填写数据后,工具实时自动保存填写的信息)
3.1.3 Map Local中的匹配规则:
•(多个被勾选enabled的接口时)自上而下匹配:传入请求将按自上而下优先级进行匹配。列表顶部的规则会是尝试匹配的第一个规则。
• 星号( ) :匹配任意字符零次或多次。例如,“api.proxyman.io/v1/”匹配以“api.proxyman.io/v1/”开头的任何内容,“api.proxyman.io/v1/login”、“api.proxyman.io/” v1/data” 和 “api.proxyman.io/v1/“等也能被匹配到。
• 问号 ( ? ):匹配单个字符一次。例如,“api.proxyman.io/v?/login”, api.proxyman.io/v1/login 、 api.proxyman.io/v2/login等都会被匹配到
• 包括子目录:所有子目录会自动匹配。例如:以“api.proxyman.io”为域的URL,“api.proxyman.io”、“api.proxyman.io” /v1/data”, “api.proxyman.io/login”, “api.proxyman.io/user?name=nghia”等都会被匹配到
• HTTP / HTTPS :默认情况下,“api.proxyman.io”匹配所有请求,可以是HTTP 或HTTPS请求协议。然而,“http://api.proxyman.io”仅会匹配 HTTP请求协议,而“https://api.proxyman.io”仅匹配 HTTPS请求协议。
其他示例:
api.proxyman.io 勾选“include subdirectories” 可以匹配的URLs示例:api.proxyman.io, http://api.proxyman.io, https://api.proxyman.io,api.proxyman.io/v1/data, https://api.proxyman.io/v2/login, …
api.proxyman.io/v1/* 可以匹配的URLs示例:api.proxyman.io/v1/data, https://api.proxyman.io/v1/login, …
/v1/ 可以匹配的URLs示例: api.proxyman.io/v1/data, https://producthunt.io/v1/login, …
api.proxyman.io/v?/login 可以匹配的URLs示例:api.proxyman.io/v1/login, api.proxyman.io/v2/login, … | |
https://api.proxyman.io/v1/login?username=nghia 仅可匹配: https://api.proxyman.io/v1/login?username=nghia | |
3.2 测试前端接受到响应中的不同参数后的行为
基础的功能测试,会考虑预期会出现的响应结果,再根据预期构建具体的数据进行验证,手动构建数据往往还要切换不同的账号,结合Proxyman工具的使用会节省很多时间。
3.2.1 截获接口,通过BreakPoint功能对请求或响应内容进行编辑




可以使用到的场景示例
- 通过更改状态码,前端如何根据不同的状态码展示不同的内容
- 修改返回的内容,为空和不为空时,前端UI的展示
- 更改内容的长度,查看前端UI的展示
- ··············
3.3 可以直接导出请求和响应的参数,方便重现
可以直接将Bug中,相关的请求响应直接导出附在Bug管理工具中,其他开发时可直接导入复现Bug。Bug被修复后,测试人员也可以直接导入该数据,直接在Proxyman中执行接口,进行验收
3.4 进行接口测试
点击“Edit and Repeat ”可以捕获相关的接口,更改参数,查看接口返回的内容是否正常;也可点击“Repeat”,重复请求接口(相同的请求参数),查看Server的处理是否正常

3.5 Map Remote,更改请求的终点

3.6 其他
- proxyman目前也支持拦截来自 WatchOS 网络通信(官网有详细的说明)
- Proxyman 提供了一个脚本功能,开发人员可以编写 JS 代码以灵活的方式操作请求/响应。

参考:
https://proxyman.io/posts/2019-08-03-map-local-feature
https://proxyman.io/posts/2019-09-15-Use-Breakpoint-to-intercept-and-edit-request-response-on-iOS-app
https://proxyman.io/posts/2020-02-25-Change-HTTP-status-codes-for-UI-testing
https://proxyman.io/posts/2019-07-06-How-I-use-Proxyman-to-report-bugs-more-effectively
https://proxyman.io/posts/2021-09-02-intercept-https-traffic-from-watch-os-simulator
https://docs.proxyman.io/
