相信这个问题很多人都遇到过Android7.0以上系统无法抓包的问题,由于在测试过程中对分析定位问题很不方便,所以就想找了解决的办法让公司的开发童鞋改了改(毕竟我不能改开发代码,要是可以的话我就…),成功之后,就让开发写了一篇总结文章出来,结果开发也说搞不定,于是自己百度,自己解决,所谓前人种树后人乘凉嘛~~以下就是解决办法。
遇到的问题:Android6.0及以下系统可以抓包,而Android7.0及以上系统不能再抓包?
产生原因:Android7.0+的版本新增了证书验证,所以app内不再像原来一样默认信任用户的证书
如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以810119819,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。
当时我立即采取了,如下解决措施
1.先百度
2.问开发
3.问同行
百度结果
看来看了网上大部分的博客得到如下解决方案
方案一实现如下:
a.在Android工程目录的res底下创建一个xml文件夹,然后在内部创建一个名为 “network_security_config.xml”的文件
b.在AndroidManifest里的标签中,添加代码:
android:networkSecurityConfig="@xml/network_security_config"
然后从新编译打包即可抓包,很是方便,对应开发童鞋来说,也是很方便,但是,测试的是企业微信小程序,想让企业微信的开发人员帮我这么干,简直是白日做梦,还不说安全的问题等。。。。。
方案二实现如下:
a.找一个低于6.0或者等于6.0版本的Android设备或者模拟器,即可解决,但是考虑到:治标不治本,公司本身就没有这样的设备,再加上找了几个模拟器,都是Android7.0版本的,所以此方案,直接选择放弃。
问开发结果
开发去研究了半天,结果过来告诉我,我的ios是可以抓包的啊,Android的我就不知道了,这是,我顿时想掀桌子。。。。。
问同行结果
同行提供了如下方案
1.使用方案1
2.换个工具抓,例如fidder,或者BurpSuite等,但是自己使用了,还是不行
3.直接去ng哪儿拦截,但是我需要抓取的有一部分是第三方的接口,前方已经高能,此路不通
最后还是不死心,还是自己继续百度,要不上github找一下看看,终于黄天不负有心人,终于找到了满足的条件的解决方法
charles + VirtualXposed + JustTrustMe
实现步骤
进入github下载如下两个pages
VirtualXposed:https://github.com/android-hacker/VirtualXposed
JustTrustMe:https://github.com/Fuzion24/JustTrustMe
第一步
使用如下adb命令分别安装两个pages
adb -s R3J6R19B20004228 inatall VirtualXposed
adb -s R3J6R19B20004228 install JustTrustMe
第二部
安装完成进入VirtualXposed apk应用,点击6个小点进入设置页面
第三步
进入设置页面,点击模块管理,勾选JustTrustMe(当然我并没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可,我这里选择的企业微信做案例
第四步
设置charles代理,此处不再说明,相信设置代理大家能自己解决,手机设置wifi里面代理改成手动。输入ip,端口:默认8888,注意手机和电脑在一个wifi下就ok,
回到VirtualXposed 上滑解锁,打开我们之前安装的企业微信,则发现charles已经成功抓取到企业微信的HTTPS的数据包
有时候,遇到问题很慌,不知所措,但是,作为一个合格的测试人员,遇到事情,应该泰山崩于前而色不变 麋鹿兴于左而目不瞬,就比如本次经验来说,开发都放弃了,但是经过一波几折,最终还是通过自己的努力解决了,技术的道路没有捷径,需要我们一步一个脚印的走下去。就好比这件事情,研发都说搞不定了,我搞定了,研发看我的眼光都不一样了,以后提bug也更加有说服力了。
最后还是那句话,技术菜,可以被鄙视,文章写得烂可以被喷,但是,学习的心不能被质疑
整理了一份216页软件测试大厂面试题,以及2020推荐最新的简历模板,送给小伙伴们,关注公众号程序员阿沐回复【简历】自行领取,和一些小伙伴建立一个技术交流群,一起探讨技术,分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!