在接口测试中,置信很多人都遇到过 Android 高版本(Android7.0 以上)零碎无奈抓包的问题。
因为在测试过程中对剖析定位问题很不不便,所以就想找开发的同学帮忙,后果开发也说搞不定,那只能本人解决了。
问题剖析
问题起因剖析如下:
问题:Android6.0 及以下零碎能够抓包,而 Android7.0 及以上零碎不能抓包;起因:Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信赖用户的证书;
参考网上材料失去如下解决方案:
计划一
在 Android 工程目录的 res 底下创立一个 xml 文件夹,而后在外部创立一个名为“network_security_config.xml”的文件;
编辑
在 AndroidManifest 里的标签中,增加代码:
编辑
而后从新编译打包即可抓包,这对开发童鞋来说,也很不便。然而,因为测试的是企业微信小程序,想让企业微信的开发人员帮我这么干,几乎是白日做梦,更不用说平安等问题…
计划二
找一个低于 6.0 或者等于 6.0 版本的 Android 设施或者模拟器,即可解决。然而思考到:治标不治本,公司自身就没有这样的设施,再加上找了几个模拟器,都是 Android7.0 版本的,所以此计划,间接抉择放弃。
而后只好再去找开发,开发钻研了半天,后果过去通知我,我的 iOS 是能够抓包的啊,Android 的就不晓得了,一瞬间我都有点想掀桌子了…
只好再找测试开发同学征询解决方案:
应用计划一
换个工具抓,例如 Fidder,或者 BurpSuite 等(这个尝试后发现还是不行)间接去 NG 那里拦挡,然而我须要抓取的有一部分是第三方的接口(后方曾经高能,此路不通)
最初,还是有点不死心,本人持续搜寻各种材料,终于黄天不负有心人,找到了满足条件的最终解决办法。
最终解决方案
Charles + VirtualXposed + JustTrustMe
实现步骤
进入 Github 下载如下两个 Page
VirtualXposed:GitHub - android-hacker/VirtualXposed: A simple app to use Xposed without root, unlock the bootloader or modify system image, etc. 4
JustTrustMe:GitHub - Fuzion24/JustTrustMe: An xposed module that disables SSL certificate checking for the purposes of auditing an app with cert pinning 3
第一步
应用如下 adb 命令别离装置两个 pages
adb -s R3J6R19B20004228 inatall VirtualXposedadb -s R3J6R19B20004228 install JustTrustMe
第二步
装置实现进入 VirtualXposed apk 利用,点击 6 个小点进入设置页面
编辑
第三步
进入设置页面,点击模块治理,勾选 JustTrustMe(当然我并没有找到它,可能是我这个版本不须要在手动抉择了,装置之后自动识别到了)重启之后咱们从新进去设置页面,增加咱们须要抓包的利用即可,我这里抉择的企业微信做案例。
编辑
第四步
点击增加利用,抉择须要抓包的软件装置:
编辑
配置 Charles 抓包
设置 Charles 代理,此处不再阐明,置信设置代理大家能本人解决,手机设置 wifi 外面代理改成手动。输出 IP,端口:默认 8888,留神手机和电脑在一个 wifi 下就 ok。
第六步
回到 VirtualXposed 上滑解锁,关上咱们之前装置的企业微信,则发现 charles 曾经胜利抓取到安居客的 HTTPS 的数据包:
编辑
编辑
总结
测试工作中,遇到问题/bug 常常会让人很烦很慌,手足无措。然而,作为一个合格的测试人员,遇到事件,还是要努力做到「泰山崩于前而色不改, 麋鹿兴于左而目不瞬」(秀文采~),连开发都放弃了,咱还能放弃淡定,方显测试英雄本色!
技术进阶没有捷径,唯有一步步积攒,踏坑填坑保持走上来。这次的问题虽几经挫折,但我最终搞定之后,开发看我的眼神都不一样了,当前提 bug 也更加有说服力了。