静态注入器是HttpCanary最强大的功能之一,能够实现对Http请求数据和响应数据的拦截修改。静态注入器须要先选定一个请求,而后对其进行预编辑,编辑完成后即可对后续的相同请求进行自动修改。github
好比App发往服务器的请求为:https://test.com?city=beijing ,咱们可使用HttpCanary的静态注入器将参数值beijing修改成nanjing 。对App的开发和测试而言,能够模拟不少不一样场景的请求,来提升测试效率。json
本篇文章将详细讲解如何使用静态注入器。api
https://www.apiopen.top/weatherApi?city=北京
复制代码
首先,长按抓包记录,在弹框中选择“静态注入“,而后给注入器命名(方便后面对注入器进行管理)。bash
命名完成后,进入注入器编辑界面。编辑页面会展现出此请求的全部Http协议数据,包括请求行(Start Line)、请求头(Headers)、请求体(Body)、状态行(StatusLine)、响应头(Headers)、响应体(Body)。服务器
左边Tab是请求数据,右边是响应数据。 编辑器
关于Http协议的报文结构,下面这张图作了详细描述(图中非范例请求数据),更多内容请见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Messagespost
在了解Http协议报文以后,咱们下面开始讲解如何使用注入器修改数据。测试
咱们但愿将请求参数city的值由北京修改成南京。spa
https://www.apiopen.top/weatherApi?city=南京
复制代码
只须要点击”city=北京“这个参数区域。
打开URL参数编辑页后,将参数值由北京改成南京,并保存。
修改完成后,返回注入器页面。city前面的点颜色由灰色变为绿色,表示参数是修改状态。即若是后续相同请求参数中包含city参数,其值会被强制替换成南京。
点击右上角完成注入器的建立。
下面咱们从新用AppTest应用发送一条相同的请求,来测试修改是否能生效。抓到包后,打开抓包内容详情:
因为南京是中文,做为URL一部分会被Encode,不怕,咱们点击这个URL打开URL预览页:
咱们最后再来看看响应数据,确认下是不是真的生效了。
完美!
若是咱们但愿将请求修改成这种:
https://www.apiopen.top/weatherApi?province=江苏&days=7
复制代码
即删除city参数,新增province和days参数。
一样先按照上一步的步骤打开静态注入器编辑页面。点击city参数右侧的三个点按钮,打开功能选择弹框,一共有三个选项:跟随,自定义,禁用。
这里解释下三个选项的含义。
因此,删除city参数,咱们选择禁用选项,注意参数前面的点变成了红色。
下一步,点击新增按钮添加两个参数,province=江苏和days=7。
点击右上角保存,完成注入器建立后,咱们从新再发一条请求,看看效果。
很明显,city参数没有了,多了province和days两个参数。
完美!
同上面URL操做相同,参考1和2,再也不赘述。
Http协议中响应行用来表示请求服务的结果状态,好比经常使用的200表示成功,404表示资源未找到,500表示服务器异常等等。
有的时候为了测试一些极端状况,好比服务器不返回200而是404,App状态是否会出现bug等。咱们可使用HttpCanary来强行修改响应行中的状态码来实现这种效果。
点击编辑按钮,打开列表,其中列出来几乎全部经常使用的响应行(都是标准响应行),咱们从列表中选择404 Not Found。
选择后自动返回,若是想撤销操做,点击右边复位按钮。
咱们点击右上角保存按钮完成注入器的建立,从新用AppTest应用发送一条相同请求。从下图中能看出,后面接收到的请求已是404 Not Found了。
完美!
在App实际开发和测试中,修改请求数据和返回数据是最常常用到的。好比,测试地理位置相关接口时,须要修改经纬度;再好比,服务器返回了某些时间戳,咱们但愿将其延长或者缩短。
一样以此天气接口为例,但愿将响应体中的yesterday的high改成100℃,low改成-100℃,type改成冰雹
打开建立静态注入器的页面后,拉到最下面。点击右侧向上的箭头,选择编辑方式。
静态注入器提供了两种方式用来编辑Body:上传文件和直接编辑。若是Body是二进制格式数据(好比音频、视频、ProtoBuffer等),HttpCanary内置的文本编辑器是没法处理的,只能使用上传文件的方式。若是Body是json、xml、fromdata等文本格式,可使用直接编辑。
因为接口返回的天气数据是JSON格式,咱们可使用直接编辑选项,打开后直接进行数据修改。
保存后完成静态注入器的建立,用AppTest应用再发送一条相同请求,来看看结果。
修改为功!完美!
静态注入器和咱们经常使用的断点(BreakPoint)方式修改数据不一样,它是经过预设的方式来拦截和修改数据,能够极大地提升数据修改的效率。
HttpCanary能够对一个请求配置多个静态注入器,按照先配置先生效的原则进行拦截处理。静态注入器一旦建立了,将会以Mod的形式做为插件功能存在于HttpCanary中,即便是杀掉HttpCanar APP后再重启也能生效。
那咱们如何对注入器进行管理呢?打开设置->模组管理页面,能看到全部建立的静态注入器。
点击进入详情后,能看到注入器是属于哪一个请求的。
若是须要删除或者禁用已经建立的静态注入器,只须要在列表页长按打开功能选项便可!
若是您对HttpCanary有任何疑问或者建议,能够访问HttpCanary Github并建立issue!
静态注入器的使用指南到此结束,感谢您的阅读!