HttpCanary的插件和静态注入
本帖最后由 micfy 于 2022-5-23 15:04 编辑说在前面:HttpCanary(小黄鸟)有多个版本,本人经过测试,发现v3+的功能多一点,抓包好用,但是没有静态注入功能,v9+有静态注入,但是抓包分析包的功能比较弱。
作为目前Android平台最强大的抓包工具,HttpCanary从设计之初就规划了插件功能(2.6.0版本之前称为‘模组’)。基于NetBare框架的虚拟网关-拦截器设计,HttpCanary可以实现非常多的扩展功能,
比如Host屏蔽、IP屏蔽等。将一些扩展功能都以插件的形式,集成到HttpCanary中,既互相独立又相互作用,最典型的就是静态注入器。
插件 HttpCanar版本 v3+插件安装HttpCanary -> 插件管理 -> 右上角+号 -> 插件仓库
插件1:Host屏蔽利用Host屏蔽插件,我们可以屏蔽对指定Host或者服务器IP的Http请求,比如屏蔽广告请求等。
1.1 使用方式创建一个名为hosts.txt的文本文件,将需要屏蔽的Host或者IP以一行一行的格式添加进去,然后复制到/HttpCanary/plugins/HostBlock/目录下。比如:
www.hello.com
www.work.com
www.bug.com:8080
除了Host,也可以加入IP地址:
10.11.12.13
10.10.10.10
123.123.123.123
当然,还可以Host和IP混着写:
www.hello.com
10.11.12.13
10.10.10.10
www.work.com
123.123.123.123
www.bug.com:8080
1.2 注意事项Host后面有些情况下需要加入端口号,具体可以到抓包内容总览中查看Host后面是否有端口号。
1.3 本人常用屏蔽广告网址
*.pglstatp-toutiao.com
*.ugdtimg.com
*.pangolin-sdk-toutiao.com
*novelapp.ixigua.com
toblog.ctobsnssdk.com
*default.ixigua.com
log-api.pangolin-sdk-toutiao-b.com
api-access.pangolin-sdk-toutiao.com
sdk.e.qq.com
mi.gdt.qq.com
pgdt.ugdtimg.com
qzs.gdtimg.com
ib.snssdk.com
p6-ad-sign.byteimg.com
mssdk-bu.bytedance.com
插件2:MimeType屏蔽和Host屏蔽类似,MimeType屏蔽插件可以用来屏蔽指定类型的Mime-Type,但不同的是MimeType屏蔽插件的屏蔽功能分为上行屏蔽和下行屏蔽,即可以配置屏蔽请求或者屏蔽响应。
什么是MimeType?它是一种包含在Http头部的Content-Type中的数据,用来标识数据类型,比如图片、Json、Html等,各种MimeType的定义请点这里!
2.1 使用方式如果要屏蔽包含指定MimeType的请求,创建一个名为req-mimes.txt的文本文件,将需要屏蔽的MimeType以一行一行的格式添加进去,然后复制到/HttpCanary/plugins/MimeTypeBlock/目录下。
如果是要屏蔽响应,则文本文件名应为res-mimes.txt。
比如说我要屏蔽一些视频广告,可以在res-mimes.txt中添加如下:
video/mp4
这样,所有mp4类型的数据响应都被HttpCanary屏蔽了,包括视频广告等。
2.2 插件应用下面以企鹅家的视频应用为例,看一下视频广告的拦截效果。
首先,配置好插件并启用。简单步骤如下:
打开/HttpCanary/plugins/MimeTypeBlock目录,编辑res-mimes.txt。加入一行:video/mp4,
然后保存。启动首页抓包开关按钮。准备好之后,打开企鹅视频应用,注意先把缓存清理下,防止有本地广告视频缓存。
开着HttpCanary的时候广告已经load不出来了,屏蔽生效!
插件3:图片、音频和视频下载器有的时候,我们希望能保存某些图片、视频等媒体文件并分享到微信好友或朋友圈,比如一段精彩的电影预告片等。但是一般情况下,网站或者应用只提供浏览的功能,不会提
供下载或者保存功能。这个时候HttpCanary的下载器插件就派上用场了。
HttpCanary的下载器一共有三个,分别是图片下载、音频下载、视频下载。原理都是通过检测Http响应数据头部中的Content-Type,从而判断是否需要保存响应数据。
3.1 使用方式安装好插件后,直接在首页开启抓包按钮。然后所有的图片请求文件都会自动保存到/HttpCanary/plugins/ImageDownloader目录下。连任何Icon都不会放过!
插件4:请求统计表如果希望将所有抓包到的请求信息,以Excel表的形式导出,这个插件就派上用场了!请求数据统计的维度包括:Url服务器IP协议请求方法响应码请求开始时间请求响应时间请求结束时间请求
数据大小(B)响应数据大小(B)耗时1(ms)耗时2(ms)其中包括一些请求时间维度,可以用来计算网络请求的平均耗时,是性能测试一款利器。
4.1 使用方式安装好插件后,直接在首页开启抓包按钮。当停止抓包后,会自动在/HttpCanary/plugins/StatsOverview目录下生成本次抓包的Excel表格。
插件5:微信定位漂移微信定位漂移插件是用来修改定位经纬度的,实现“蒙多想去哪儿就去哪儿”的功能。包括:聊天时发送的地理位置,发朋友圈的地理位置。
5.1 使用方式将经纬度按照 经度,纬度 的格式复制到粘贴板上,比如可以利用百度地图坐标拾取系统获取指定地点的经纬度(右上角直接复制即可)。完成后启动首页抓包按钮。测试效果未知。
插件须知由于每个插件都是独立的拦截器,且每个拦截器都会对网络流量进行分析探测,所以如果启用的插件过多,对性能是有一定的影响的,比如卡顿,访问网络慢等。另外,如果说只需要用到插件功能,而
不需要关心具体抓包内容,比如下载器、广告屏蔽等。强烈建议在设置中开启性能模式!
静态注入,HttpCanar版本v9+。静态注入器是HttpCanary最强大的功能之一,可以实现对Http请求数据和响应数据的拦截修改。
静态注入器需要先选定一个请求,然后对其进行预编辑,编辑完成后便可对后续的相同请求进行自动修改。比如App发往服务器的请求为:https://test.com?city=beijing ,我们可以使用HttpCanary的静态注入器
将参数值beijing修改为nanjing 。对App的开发和测试而言,可以模拟很多不同场景的请求,来提高测试效率。
测试请求范例https://www.apiopen.top/weatherApi?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的值由北京修改为南京。https://www.apiopen.top/weatherApi?city=南京复制代码只需要点击”city=北京“这个参数区域。打开URL参数编辑页后,将参数值由北京改为南京,
并保存。修改完成后,返回注入器页面。city前面的点颜色由灰色变为绿色,表示参数是修改状态。即如果后续相同请求参数中包含city参数,其值会被强制替换成南京。点击右上角完成注入器的创建。下面我们重
新用AppTest应用发送一条相同的请求,来测试修改是否能生效。抓到包后,打开抓包内容详情:由于南京是中文,作为URL一部分会被Encode,不怕,我们点击这个URL打开URL预览页:我们最后再来看看响应
数据,确认下是否是真的生效了。完美!
2. URL参数添加和删除如果我们希望将请求修改为这种:https://www.apiopen.top/weatherApi?province=江苏&days=7复制代码即删除city参数,新增province和days参数。同样先按照上一步的步骤打开静态注入
器编辑页面。点击city参数右侧的三个点按钮,打开功能选择弹框,一共有三个选项:跟随,自定义,禁用。这里解释下三个选项的含义。跟随,表示使用原始数据,不做任何修改(默认选项),颜色为灰色。自
定义,表示强行覆盖或添加设定的参数值,颜色为绿色。禁用,表示强行删除此参数和值,颜色为红色。所以,删除city参数,我们选择禁用选项,注意参数前面的点变成了红色。下一步,点击新增按钮添加两个参
数,province=江苏和days=7。点击右上角保存,完成注入器创建后,我们重新再发一条请求,看看效果。很明显,city参数没有了,多了province和days两个参数。完美!3. Headers修改、添加和删除同上面URL
操作相同,参考1和2,不再赘述。
4. 响应行(Status Line)修改Http协议中响应行用来表示请求服务的结果状态,比如常用的200表示成功,404表示资源未找到,500表示服务器异常等等。有的时候为了测试一些极端情况,比如服务器不返回200
而是404,App状态是否会出现bug等。我们可以使用HttpCanary来强行修改响应行中的状态码来实现这种效果。点击编辑按钮,打开列表,其中列出来几乎所有常用的响应行(都是标准响应行),我们从列表中选择
404 Not Found。选择后自动返回,如果想撤销操作,点击右边复位按钮。我们点击右上角保存按钮完成注入器的创建,重新用AppTest应用发送一条相同请求。从下图中能看出,后面接收到的请求已经是404 Not Found了。
完美!
5. 请求/响应体(Body)修改在App实际开发和测试中,修改请求数据和返回数据是最经常用到的。比如,测试地理位置相关接口时,需要修改经纬度;再比如,服务器返回了某些时间戳,我们希望将其延长或者缩短
。同样以此天气接口为例,希望将响应体中的yesterday的high改为100℃,low改为-100℃,type改为冰雹打开创建静态注入器的页面后,拉到最下面。点击右侧向上的箭头,选择编辑方式。静态注入器提供了两种方
式用来编辑Body:上传文件和直接编辑。如果Body是二进制格式数据(比如音频、视频、ProtoBuffer等),HttpCanary内置的文本编辑器是无法处理的,只能使用上传文件的方式。如果Body是json、xml、fromdata
等文本格式,可以使用直接编辑。由于接口返回的天气数据是JSON格式,我们可以使用直接编辑选项,打开后直接进行数据修改。保存后完成静态注入器的创建,用AppTest应用再发送一条相同请求,来看看结果。
修改成功!完美!
6. 静态注入器管理静态注入器和我们常用的断点(BreakPoint)方式修改数据不同,它是通过预设的方式来拦截和修改数据,可以极大地提高数据修改的效率。HttpCanary可以对一个请求配置多个静态注入器,按照
先配置先生效的原则进行拦截处理。静态注入器一旦创建了,将会以Mod的形式作为插件功能存在于HttpCanary中,即使是杀掉HttpCanar APP后再重启也能生效。那我们如何对注入器进行管理呢?
打开设置->模组管理页面,能看到所有创建的静态注入器。点击进入详情后,能看到注入器是属于哪个请求的。如果需要删除或者禁用已经创建的静态注入器,只需要在列表页长按打开功能选项即可!
结语参考文章《HttpCanary使用指南——各种神奇的插件》https://blog.csdn.net/weixin_34005042/article/details/91443419《HttpCanary使用指南——静态注入器》https://blog.csdn.net/weixin_33737774/article/details/88107782
有没有考虑...改一下排版 这太哈人了 闷骚小贱男 发表于 2022-5-24 06:41
所以同一个url,参数不一样的,怎么静态?
比如:https://test.com?city=beijing和https://test.com?cit ...
不知道黄鸟那边是怎么判断的,但是如果黄鸟不行,可以用netbare自己搞一下 字可以弄小一些吗。。。 字可以弄小一些吗,太大了看不清{:301_997:} app也来个附件:lol 小白表示看不懂:wwqwq 学习一个,终于学会怎么用那个插件定位的了, 这排版.....................无话可说了 Zy143L 发表于 2022-5-23 13:48
有没有考虑...改一下排版 这太哈人了
排好版,粘贴尽量后都变了{:1_909:},原谅我论坛功能用的不熟,听从意见,稍微改进了一下 L__ 发表于 2022-5-23 13:50
app也来个附件
app有发过的了,可以搜索一下