移动开发盛行的背景下,一个好用的 HTTP[S] 请求抓包工具。然而现存的软件当中,Fiddler、Charles都是收费软件,开源的工具功能都太简单,没有可比性。自制这个抓包工具一是为了提供一个功能比较强大的开源方案,另一方面也解决诸如 Fiddler 对 Mac 兼容性不好,Charles不支持 HTTPS 转发HTTP 等问题,更重要的是,这个项目中文优先。
- 通过代理实现请求记录
- 仿照 Charles 的树形请求记录列表
- 保存请求记录
- 请求转发
- Mock 请求结果
- HTTPS 请求转发给 HTTP 服务端或相反
- HTML 页面注入 JS 脚本
- JSON 数据结构化显示
- Gzip 包装,节省网络带宽
- 请求记录筛选
- 慢速、不稳定网络环境模拟
- 注入 Vorlon 远程调试
- 极偶然的情况下,软件界面上一些图标会显示不出来。遇到这种情况,重新打开软件即可
- 电脑进入睡眠状态再唤醒后,代理服务器可能会关闭。遇到这种情况,重新打开软件即可
本软件开箱即用,解压下载的压缩包后,Mac 双击直接启动,Windows 双击Vodo.exe 启动。Mac 系统想将 vodo 添加到 Luanch Pad,直接将应用拖放至 Application 文件夹里即可。
Vodo 是通过代理的方式来截取网络请求,工作原理与 Fiddler、Charles 一样,所以使用方法也类似:
- 启动 Vodo,代理服务器会自动开始启动
- 代理服务器启动成功后,主窗口的右上角会显示“代理已启动”。同时本机的 IP 地址以及代理服务器的端口也会在右上角显示
- 按照右上角提示的代理地址,在需要抓取请求的设备上设置代理
- 有些设备或 App 需要重启需要调试的 App
- 请求记录会开始出现在主界面的左侧列表当中
左侧列表有两种展示模式:
- 结构树: 将记录到的请求路径以“/”分列,以文件夹的形式展示
- 时序列表: 以列表的形式按请求开始时间顺序依次列出所有请求记录
点击查看某个请求的详情,首先会看到请求的“基本信息”。在此可以见到本次请求的摘要、请求头、响应头。
请求数据分两部分:
- 地址参数: 直接在请求 url 里放置的参数,PHP 中
$_GET
参数 - 发出数据: 在请求体力发出的数据,可能是上传的文件,也可能是 PHP 中
$_POST
参数
响应数据可能是有多重情况:
- JSON: 会结构化展示
- 图片: 会提供图片预览
- 文本: 会直接以文本形势展示
- 其他或者过大的内容: 不提供展示,内容上限默认为1MB,可在设置里提升
很多网站、App 选择使用 HTTPS 请求来保证信息安全,在谷歌等大公司的推动下,很多场景必须使用 HTTPS。设备设置了代理之后,可能会出现网络无法正常使用的情况,这是因为 Vodo 通过证书伪造截取并解读了 HTTPS 请求。伪造的证书设备默认是不会信任的,可能会弹出安全提示也可能直接提示网络异常。
遇到这种情况,可以有两个选择:
- 打开设置(主窗口右上角的齿轮按钮),勾选“忽略HTTPS”,这样可恢复 HTTPS 的正常访问,但是 Vodo 将不会解读 HTTPS 请求的内容
- 在设备上安装并信任 Vodo 的 SSL 根证书,安装方法见下文
在第一次启动 Vodo 的时候,会生成一个 SSL 根证书,Vodo 会使用这个根证书来声场伪造的网站 SSL 证书。设备信任了这个根证书,就会信任所有 Vodo 所伪造出来的证书。
Vodo 给每个用户生成的根证书都是不一样的,也不会以任何形式将秘钥公开,所以你不必担信任根证书会有产生不安全的问题。
- 在 Wi-Fi 设置里配置代理
- 在系统自带浏览器里打开网址 vo.do(支持文件下载的QQ浏览器等第三方浏览器也可以)
- 点击下载“SSL证书”(有的手机系统会自动安装证书,可跳过后续步骤)
- 在 系统设置 - 更多 or 高级 - 系统安全 - 从存储设备安装 里选择下载的 .cer 文件
有的安卓系统无法从浏览器直接下载安装证书,可以在开启 Vodo 的桌面系统上通过 http://127.0.0.1:8888/vodo.cer 下载证书文件,然后通过 USB 将证书传输给设备。
**特别说明:**如果安卓系统是 7.0 或以上,即便安装了根证书也不一定能正常使用 HTTPS。这是因为安卓从 7.0 开始,应用可以选择是否信任用户自己安装的根证书。大部分从市场下载的应用不会选择信任,请确保你所要调试的 App 是信任用户证书的版本。
- 在 Wi-Fi 设置里配置代理
- 在 Safari 里打开网址 vo.do
- 点击下载“SSL证书”,选择安装该证书
- 在 系统设置 - 通用 - 关于本机 - 证书信任设置 里打开对 Vodo 证书的信任
- 在系统设置或者浏览器设置里配置代理
- 使用浏览器访问 vo.do
- 下载证书
- 双击下载下来的 .cer 文件
- 点击“安装证书”
- 选择“当前用户”,下一步
- 选择将“将所有的证书放入下列存储”
- 点击浏览,选择“受信任的根证书颁发机构”,下一步
- 完成
- 在系统设置或者浏览器设置里配置代理
- 使用浏览器访问 vo.do
- 下载证书
- 双击证书进行安装
- 打开钥匙串
- 双击 vodo 证书
- 选择信任所有
除了抓包,求情替换也是 Vodo 的核心功能。转发有两种:
- 将请求转发给其他服务端
- 直接使用本地文件作为请求的返回内容
匹配有两种模式:
- 准确: 只有请求路径与设置的完全一样时才算命中
- 扩展: 只要请求的路径以设置的路径为开头就算命中
替换也有两种模式:
- 准确: 转换后的请求路径与设置的完全一样
- 扩展: 转换后的请求会附加实际请求路径匹配后剩余的内容
替换规则会按照顺序依次检查。
在 Vodo 的设置里可以选择开启注入JS脚本,开启后,设置代理的设备在打开任何 html 页面的时候会首先执行设置的脚本。如果开启了“忽略HTTPS”,使用 HTTPS 的网站将不会被注入。