背景:Android 7.0 ( API 24 )及以上,APP 默认不信任用户域的证书。
参考链接:网络安全性配置,https://developer.android.com/training/articles/security-config
那么直接信任 Charles 的证书已经不能满足要求了。
请问各位老司机,需要抓包 https 的请求,有什么最佳实践吗?
1
mouyong 2018-12-25 13:19:28 +08:00 1
whistle
|
2
2owe OP @mouyong #1
https://github.com/avwo/whistle/blob/master/docs/zh/questions.md 看了一下常见问题,这个应用也是通过信任证书实现的,无法解决上面的问题。 |
3
annoy1309 2018-12-25 13:32:31 +08:00
如果是自有 APP,Google 提供一个 debug 模式发布 app 的印象中,这个模式下,修改 trust-anchors 可以让 app 默认可以信任用户域
|
4
annoy1309 2018-12-25 13:34:38 +08:00 1
不是自有的话,xposed 吧。我记得有 JustTrustMe 一个插件
|
5
lzvezr 2018-12-25 13:49:31 +08:00 via Android 1
不信任用户证书好办,root 以后把证书丢到 system 里就可以了
重点是 ssl-pinning,目前除了使用 xposed 以为,没什么好方法,所以 xposed 没有支持到的 9.0 系统无效,楼上提到的插件之前在 8.1 测试无效,不知道更新适配没有 所以我的解决方法就是使用 6.0 系统,因为 ssl-pinning 涉及到很多证书验证的东西,很少自己实现的,而安卓在 7.0 才提供了原生解决方案,所以用 6.0 抓 HTTPS 轻松很多 |
6
yukiww233 2018-12-25 13:56:04 +08:00 2
|
7
yst 2018-12-25 13:59:01 +08:00
https://github.com/levyitay/AddSecurityExceptionAndroid
这个脚本可以通过 apktools 修改配置文件然后重新打包 一年前用 Nexus 6p 的时候用过,现在不知道还有用么 您可以试试 |
10
2owe OP @annoy1309
有非自有 APP 的需求,比如在微信里打开页面,使用微信授权。微信自带的工具一个问题就是,有些请求可能是过快了??请求内容获取不到。 |
14
momocraft 2018-12-25 17:42:51 +08:00
不验证签名的 app 可以解包-改 manifest-重签名 搞定吗?
|
16
baymaxx 2018-12-25 19:42:55 +08:00
这个问题要看引起的原因,如果仅仅是因为不能信任用户证书引起的,其实只借助 VirtualApp 和 Charles 就能解决,
1. 首先正常配置 Charles https 抓包,包括证书安装啥的 2. 在 VA 里面配置 <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> <!--主要这行--> </trust-anchors> </base-config> 3. 然后运行 VA,然后把你要抓包的 app 在 va 里面运行,通过 Charles 就可以抓包了。 |
17
stop9125 2018-12-25 19:53:58 +08:00
模拟器,genymotion
|
18
OrangeM21 2018-12-26 05:41:25 +08:00 via Android
上模拟器阿
|
19
OrangeM21 2018-12-26 05:41:48 +08:00 via Android
用模拟器配合 wireshark
|
20
jlhde123 2018-12-26 20:16:34 +08:00
现在有些 app 都会检测是不是虚拟机,是虚拟机直接停止运行
|