一.Proxyman简介
1.Proxyman是原生的高性能macOS端的抓包工具1.1.它使开发或测试人员能够轻松地捕获、检查和操作HTTP或HTTPS请求/响应
二.实现原理
1.当Proxyman配置为代理服务器时,它会在设备和目标服务器之间充当中间人的角色2.Proxyman会在指定的端口上进行监听,等待您的设备发起连接
2.1.一旦设备发起连接,Proxyman 就会接收到设备发送的网络数据包
3.对于HTTP和HTTPS请求,Proxyma 能够识别和解析数据包中的各个部分3.1.例如,对于HTTP请求,它可以解析出请求方法(如 GET、POST、PUT等)
3.2.请求的统一资源标识符(URI)或URL、请求头中包含的各种信息
3.3.(如用户代理、接受的内容类型、授权信息等)以及请求体中的数据(如果存在)
4.对于HTTPS流量,Proxyman通常需要在设备上安装信任的证书,以能够解密和查看加密的数据包内容4.1.在解析完数据包后,Proxyman会将这些信息以一种易于理解和查看的形式呈现给用户
4.2.这包括以结构化的方式展示请求和响应的各个部分
4.3.提供搜索、过滤、标记等功能,以便用户能够快速定位和分析感兴趣的数据包
5.此外Proxyman还可能会记录数据包的时间戳、源IP地址和目标IP地址等信息
5.1.帮助用户了解网络通信的时序和路径6.通过对网络数据包的拦截、解析和展示
6.1.Proxyman为用户提供了深入了解网络应用通信过程的工具,有助于发现潜在的问题
6.2.如错误的请求、响应延迟、数据格式错误等
6.3.并对网络应用的性能优化、安全检测和故障排查提供有力的支持
三.前置准备
1.一台mac电脑(这个软件只有mac有,现在Windows也有)2.一个手机(安卓苹果皆可)3.手机和电脑在同一个局域网(连接同一个wifi即可)
四.开始干活(电脑操作)
1.下载软件软件官网:https://proxyman.io,点击下载即可 点我快速跳转2.百度云链接:点我下载 提取码:k3fu 版本:2.26.03.安装 HelperTool,Install Proxy Helper Tool
4.双击并打开Proxyman,界面如下
五.安装证书
六.配置代理
1.系统偏好设置>网络>高级>代理 进行代理配置:127.0.0.1: 9090。2.Proxyman默认的端口是9090,可以根据实际需要抓包的协议进行配置,如:HTTP和HTTPS
七.Proxyman使用
1.主要分为5大块,可以看到页面非常清爽筛选条件:过滤条件
请求域名:可以点击域名进行筛选
请求列表
请求信息
响应信息
八.ProxyMan抓包
1.PC端
1.1.PC端抓包比较简单,只需要点击开启按钮即可
2.手机端(以Android为例)APP抓包
2.1.安装手机端相应的证书(如果首次下载安装后已经安装了证书,可以忽略)
2.2.安装证书成功之后,会获取到当前的Ip和端口信息
2.2.1.手机WIFI设置长按WIFI,选择代理为手动,输入IP(192.168.2.101)和端口(9090),点击保存2.2.2.手机端下载Proxyman证书手机浏览器打开http://proxy.man/ssl
2.2.2.1.点击立即下载手机端安装Proxyman证书2.2.3.点击手机设置-安全-更多安全设置-加密和凭据-从存储设置安装-选择刚刚下载的证书-输入证书名称(随便起)-点击确定2.2.4.在Android应用程序中添加Proxyman配置(仅适用于Android10及以上)
2.2.4.1.添加res/xml/network_security_config.xml,将替换为要拦截的域
<network-security-config><debug-overrides><trust-anchors><!-- Trust user added CAs while debuggable only --><certificates src="user" /><certificates src="system" /></trust-anchors></debug-overrides><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /></trust-anchors></base-config><domain-config><!-- Make sure your URL Server here --><domain includeSubdomains="true">your_production_domain</domain><trust-anchors><certificates src="user"/><certificates src="system"/></trust-anchors></domain-config>
</network-security-config>
2.2.5.将下面代码添加到AndroidManifest.xml
<manifest><application android:networkSecurityConfig="@xml/network_security_config"></application>
</manifest>
2.2.6.友情提示:确保从生产中删除这些配置
3.手机端(以IOS为例)APP抓包
3.1.查看手机连接步骤
3.2.提取有效信息ip:192.168.10.82 port:9091访问这个网站下载证书http://proxy.man/ssl
3.3.开始干活(手机操作)安装信任证书:wifi配置代理
3.4.配置好wifi代理后,在浏览器输入http://proxy.man/ssl
九.验收打开ProxyMan软件,看到左侧有手机的ip表示连接成功
1.打开《小红书》,发现左侧有这两个站点和小红书相关的。点击这里的 开启https响应
2.然后就开心的抓取数据
十.演示效果
十一.构建接口请求
1.proxyman可以当作postman使用,不管是直接发起请求还是导出json格式的文件2.点击下图的编辑按钮,就可以撰写请求
3.录入必要的API和请求参数,就可以请求数据
十二.请求对比
1.工作中经常会遇到,明明线上是正常的,但是自己的接口请求就不行,很大原因是某个地方写错,但是肉眼却很难识别2.可以选择任意的两个请求,只需要右键加入对比池子,就可以看到对比效果
3.对比效果
十三.数据劫持演示
1.断点
1.1.点击某个接口:右键 => 工具,或者在工具栏点击工具
1.1.1.可以看到有几个选项卡:断点、本地映射、远程映射、脚本
1.1.2.利用这些工具可以实现对请求数据或返回数据的劫持
1.2.添加断点规则,可以使用通配符
1.3.刷新页面再次请求接口,当前接口将会在Request/Response阶段会暂停,此时可以修改返回参数
1.4.点击Execute,即可看到页面的数据变成修改后的数据
2.本地映射
2.1.同样的做法,找到一个请求,右键选择本地映射,然后配置匹配规则2.1.1.然后修改请求返回值,即可修改接口返回数据
3.脚本
3.1.上面的断点和本地映射修改请求和返回值是固定的,这里的脚本提供更加灵活的能力
3.1.1.当构建脚本规则后,可以通过js来处理请求的值和返回的数据信息
3.2.配置入口
3.3.通过js修改返回值