彻底解决安卓7.0及以上版本抓包https失败
现象
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失败的更多相关文章
- fiddler在ios10.3系统抓包https失败原因解决
一直是按照以往的设置抓包,设置代理ip,通过Safari下载安装证书,抓包https怎么显示证书无效呢?难道证书被apple设为黑名单了?google后发现,IOS10.3以后,安装了证书不是默认启用 ...
- Charles 某音最新版本抓包环境搭建
本文仅供学习交流使用,如侵立删! Charles 某音最新版本抓包环境搭建 操作环境 google nexus5x Android 8.1 Magisk 24.3 Douyin 17.3 kaliLi ...
- Android的有序广播和无序广播(解决安卓8.0版本之后有序广播的接收问题)
前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制. *** 特殊广播(动态注册广播接收者) 说:有序广播和无序广播之前,咱们先来说下Android中一些特殊的广播如 ...
- Spring3.2.0 之后各个版本完整包下载地址
留作工作学习使用 现在Spring官网已经很难找到完整包的下载地址,都已经迁移到Maven上,这给不能用Maven或者不愿用Maven的各位带来了不小的麻烦. 经过挖掘,找到了下载3.2之后各个版本完 ...
- Fiddler抓包连接失败502的解决方法
本篇用户记录,在用Fiddler遇到过的坑,首先, 先上图,遇到的问题,提示主机连接失败.只是打开Fiddler,不会报这个问题,只有当Fiddler和火狐浏览器一起启动的时候,才会报这个错. 尝试去 ...
- 【Golang】嗅探抓包,解决线上偶现问题来不及抓包的情况
背景 测试群里经常看到客户端的同学反馈发现了偶现Bug,但是来不及抓包,最后不了了之,最近出现得比较频繁,所以写个小脚本解决这个问题. 实现思路 实现的思路比较简单: 抓包 存日志 做日志管理 具体实 ...
- [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...
- Android 6.0 M userdebug版本执行adb remount失败
[FAQ18076]Android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载.挂载前会检查s ...
- 通过Fiddler 远程 对 安卓手机 iPhone 苹果手机 访问请求抓包 Android IOS14.4 fiddler代理 无法联网
Fiddler 中的设置 1 查看 Fiddler所在 电脑的内网 ip地址. (cmd > ipconfig 查看本机ipv4地址) 2 Fiddler 设置 允许远程设备连接: Fiddl ...
随机推荐
- Java实现 LeetCode 27 移除元素
27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额 ...
- 使用Pycharm安装插件时发生错误
报错内容:pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.o ...
- 第九届蓝桥杯JavaA组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分数 题目描述 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项, 求这个和是多 ...
- java实现第五届蓝桥杯圆周率
圆周率 数学发展历史上,圆周率的计算曾有许多有趣甚至是传奇的故事.其中许多方法都涉及无穷级数. 图1.png中所示,就是一种用连分数的形式表示的圆周率求法. 下面的程序实现了该求解方法.实际上数列的收 ...
- EasyARM-iMX257 linxu两年前的笔记
第三章续:简单总结第三章中出现的命令! 1) root@EasyARM-iMX257 ~# ddif=/dev/zero of=/dev/shm/disk bs=1024 count=10240 d ...
- Flask简单http接口实现
# flask demo from flask import Flask, request app = Flask(__name__) # http://127.0.0.1:8080 @app.rou ...
- 两条命令实现nodejs快速安装
操作系统: debian, ubuntu, fedora 当前版本: v14.4.0 一键安装命令: curl -sL https://deb.nodesource.com/setup_14.x | ...
- C# 反射与特性(十):EMIT 构建代码
目录 构建代码 1,程序集(Assembly) 2,模块(Module) 3,类型(Type) 4,DynamicMethod 定义方法与添加 IL 前面,本系列一共写了 九 篇关于反射和特性相关的文 ...
- Embed Tomcat Java(内嵌tomcat启动简述)
简单记录一下内部tomcat启动 maven pom.xml <dependencies> <!-- embed tomcat dependency --> <depen ...
- Thread基础-创建线程的方式
Java线程创建的几种简单方式 1. extends Thread类 public class ThreadDemo extends Thread{ @Override public void run ...