HttpCanary 更多资料, 点我!!!
静态注入器是 HttpCanary 最强大的功能之一, 可以实现对 Http 请求数据和响应数据的拦截修改. 静态注入器需要先选定一个请求, 然后对其进行预编辑, 编辑完成后便可对后续的相同请求进行自动修改.
比如 App 发往服务器的请求为: https://test.com?city=beijing , 我们可以使用 HttpCanary 的静态注入器将参数值 beijing 修改为 nanjing . 对 App 的开发和测试而言, 可以模拟很多不同场景的请求, 来提高测试效率.
本篇文章将详细讲解如何使用静态注入器.
测试请求范例
http://wthrcdn.etouch.cn/weather_mini?city = 北京
创建静态注入器
首先, 长按抓包记录, 在弹框中选择 "静态注入", 然后给注入器命名(方便后面对注入器进行管理).
命名完成后, 进入注入器编辑界面. 编辑页面会展示出此请求的所有 Http 协议数据, 包括请求行(Start Line), 请求头(Headers), 请求体(Body), 状态行(StatusLine), 响应头(Headers), 响应体(Body).
左边 Tab 是请求数据, 右边是响应数据.
关于 Http 协议的报文结构, 下面这张图做了详细描述(图中非范例请求数据), 更多内容请见: https://developer.mozilla.org/en-US/docs/web/HTTP/Messages
在了解 Http 协议报文之后, 我们下面开始讲解如何使用注入器修改数据.
1. URL 参数修改
我们希望将请求参数 city 的值由北京修改为南京.
http://wthrcdn.etouch.cn/weather_mini?city = 南京
只需要点击 "city = 北京" 这个参数区域.
打开 URL 参数编辑页后, 将参数值由北京改为南京, 并保存.
修改完成后, 返回注入器页面. city 前面的点颜色由灰色变为绿色, 表示参数是修改状态. 即如果后续相同请求参数中包含 city 参数, 其值会被强制替换成南京.
点击右上角完成注入器的创建.
下面我们重新用 AppTest 应用发送一条相同的请求, 来测试修改是否能生效. 抓到包后, 打开抓包内容详情:
由于南京是中文, 作为 URL 一部分会被 Encode, 不怕, 我们点击这个 URL 打开 URL 预览页:
我们最后再来看看响应数据, 确认下是否是真的生效了.
完美!
2. URL 参数添加和删除
如果我们希望将请求修改为这种:
http://wthrcdn.etouch.cn/weather_mini?province = 江苏 & days=7
即删除 city 参数, 新增 province 和 days 参数.
同样先按照上一步的步骤打开静态注入器编辑页面. 点击 city 参数右侧的三个点按钮, 打开功能选择弹框, 一共有三个选项: 跟随, 自定义, 禁用.
这里解释下三个选项的含义.
跟随, 表示使用原始数据, 不做任何修改(默认选项), 颜色为灰色.
自定义, 表示强行覆盖或添加设定的参数值, 颜色为绿色.
禁用, 表示强行删除此参数和值, 颜色为红色.
所以, 删除 city 参数, 我们选择禁用选项, 注意参数前面的点变成了红色.
下一步, 点击新增按钮添加两个参数, province = 江苏和 days=7.
点击右上角保存, 完成注入器创建后, 我们重新再发一条请求, 看看效果.
很明显, city 参数没有了, 多了 province 和 days 两个参数.
完美!
3. Headers 修改, 添加和删除
同上面 URL 操作相同, 参考 1 和 2, 不再赘述.
4. 响应行 (Status Line) 修改
未待完续...
来源: https://juejin.im/post/5c795b6d51882523f026826b