安卓7.0及以上版本抓包https失败解决方法
2020-07-04 11:34
796 查看
钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>
目录- 现象
- 原因
- 解决办法
- webview抓包失败
- 警告
现象
android7.0以上的手机https抓包失败(安装了https证书也不行)
原因
android7.0+的版本新增了证书验证(系统证书)
解决办法
前提:在手机端和电脑端都必须安装https的安全证书
配置:打测试包时,项目设置默认信任所有证书(系统+用户)
1.在工程res-xml目录中创建一个名为 network_security_config.xml的文件,文件内容如下:
<network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" overridePins="true" /> <certificates src="user" overridePins="true" /> </trust-anchors> </base-config> </network-security-config>
2.在AndroidManifest里的 标签中,添加如下代码:
android:networkSecurityConfig="@xml/network_security_config"
重新打包项目,然后抓包,即可成功。
webview抓包失败
上面可以解决android原生抓包问题,但在android7.0以上的手机,开着网络代理访问不了webview,若要抓包webview,
需要在webview的WebViewClient中,将一行代码给注释掉:
super.onReceivedSslError(view, handler, error)
这样是为了忽略掉SSL证书错误,因为开启代理后网络会变得不安全,证书会报错误,webview检测到证书错误之后就不请求任何数据。 注释是为了忽略掉父类的处理,默认执行下去。
警告
这样的配置操作是敏感且危险的,只能用于测试环境方便抓包,线上包一定注意要恢复配置。
后记
通过查找资料,还有一个方法,通过重载WebViewClient的onReceivedSslError()函数并在其中执行handler.proceed(),即可忽略SSL证书错误,继续加载页面,代码如下:
WebView webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // 不要调用super.onReceivedSslError,因为其包含了一条 handler.cancel(),第一次访问时无法加载,第二次以后可以加载 // super.onReceivedSslError(view, handler, error); // 忽略SSL证书错误,继续加载页面 handler.proceed(); } }
相关文章推荐
- 解决安卓7.0及以上系统抓包 https出现unknown
- pip 版本问题导致 pip install Django 失败的解决方法
- 关于ThinkPHP5及以上版本使用函数执行Python3报错的一些解决方法
- 解决Android 5.0以上版本Button自带阴影效果的方法
- 今天心血来潮,重新弄安卓环境,发现只有4.4的版本,怎么装都不见其他版本,找了N多方法,加host文件,选择https/http也不行,最后找到了一篇终于搞定,底下加黄的就是亲测解决
- fiddler在ios10.3系统抓包https失败原因解决
- 遇到一个特别傻的问题。。。用charles抓包抓不到https的解决方法
- andriod 4.0以上版本不调用onConfigrationChange方法的解决办法
- windows7开家庭组与其他版本系统共享文件失败的解决方法
- 解决system.data.oracle client要求8.1或者8.7以上的版本的方法
- ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
- Ldd3 学习笔记2 — simple 2.6.10以上内核版本编译错误解决方法!!!
- 高德地图 AMap3DMap_4.0导航功能 在5.0以上版本无法使用的解决方法
- Fidder https抓包 失败问题解决
- “检查 Microsoft Visual Studio 2008 的早期版本”失败的问题解决方法
- Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法
- dotfuscator 在混淆.Net Framework 4.0以上版本的时候报错的解决方法
- mysql 4.1以上版本中文乱码解决方法集锦
- Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法