当前位置: 首页 > 科技观察

接口测试实战|Android高版本无法抓包HTTPS怎么办

时间:2023-03-16 15:04:49 科技观察

在接口测试中,相信很多人都遇到过Android高版本(Android7.0及以上)系统无法抓包的问题。由于在测试的时候分析定位问题很不方便,所以想请开发同学帮忙。结果开发搞不定,只能自己解决了。问题分析问题原因如下:问题:Android6.0及以下系统可以抓包,Android7.0及以上系统不可以;和以前一样,默认情况下用户的证书是可信的;参考网上资料得到如下解决方案:解决方案1??在Android工程目录下的res下新建一个xml文件夹,然后在里面新建一个名为“network_security_config.xml”的文件;/base-config>在AndroidManifest中的label中,添加代码:android:networkSecurityConfig="@xml/network_security_config"然后重新编译打包抓包,即也很有用,对于开发童鞋很方便。不过因为测试的是微信小程序,所以让微信的开发者帮我做这件事简直是痴人说梦,更别提安全问题了。。。方案二:找6.0以下或等于的Android设备6.0或者一个模拟器都可以解决。但是考虑到治标不治本,公司本身没有这样的设备,找了几个模拟器,都是Android7.0版本的,所以直接选择了这个方案放弃。然后我不得不再次去找开发商。开发研究了半天,结果告诉我,我的iOS可以抓包,安卓我就不知道了。一时想掀桌子。。。只好然后找测试开发的同学请教解决方案:使用方案1换个工具抓包,比如Fidder,或者BurpSuite等(试了这个之后,发现还是不行)直接去NG拦截,但是我需要抓取的部分是第三方接口(前面已经高能了,这条路堵死了)最后他被还是有些不甘心,继续自己寻找各种资料,终于黄天不负有心人,找到了符合条件的最终解法。最终解决方案Charles+VirtualXposed+JustTrustMe实现步骤进入Github,下载如下两个页面VirtualXposed:https://github.com/android-hacker/VirtualXposedJustTrustMe:https://github.com/Fuzion24/JustTrustMe第一步是如下adb命令分别安装两个页面adb-sR3J6R19B20004228inatallVirtualXposedaddb-sR3J6R19B20004228installJustTrustMeStep2安装完成后,进入VirtualXposedapk应用程序,点击6个点进入设置页面Step3进入设置页面,点击模块管理,勾选JustTrustMe(当然我没找到可能是我的版本不需要手动选择,安装后自动识别。)重启后我们可以回到设置页面,添加我们需要抓包的应用.我这里选择了企业微信作为案例。第四步,点击添加应用,选择需要抓包的软件安装:配置Charles抓包,设置Charles代理,这里就不多说了,相信大家可以自己解决代理设置,手机设置wifi中的代理改为手动。输入IP,端口:默认8888,注意手机和电脑在同一个wifi下是可以的。第六步,回到VirtualXposed滑动解锁,打开我们之前安装的企业微信,发现Charles已经成功抓取了安居客的HTTPS数据包:不知所措。但是,作为一个合格的测试人员,遇到事情还是要努力做到“泰山崩前不改色,麋鹿兴左不眨”(修文才~),甚至放弃发展上。若是还能保持冷静,方仙就要考验他的英雄本色了!技术进步没有捷径,只有一步一步积累,一直走下去。虽然这次的问题几经波折,但在我最终解决之后,开发者看我的眼神都不一样了,以后提bug也会更有说服力。