Android 7.0+模拟器Fiddler抓包详细教程
【前言】
众所周知,假如设备是
android 7.0+
的系统同时应用设置targetSdkVersion >= 24
的话,那么应用默认是不信任安装的Fiddler用户证书
的,所以你就没法抓到应用发起的https
请求,然后你在Fiddler就会看到一堆200 HTTP Tunnel to xxx.xxx.xxx:443
的请求日志,这些都是没有成功抓取的https请求,下面重点介绍一下各种解决方案,相信总有一款解决方案适合你~
【懒人快速解决篇】
下面先介绍3
种懒人解决方案,适合需要快速解决https抓包问题的人挑选(Android Fiddler抓包官方操作文档点这里):
1、用android 7.0以下
系统的设备去装应用,是可以正常抓包,但是一般来说,android 7.0以下不管是真机还是模拟器,运行起来都是比较卡的,能接受不那么流畅体验的用户可以尝试,适合小白型用户使用;
2、把应用apk的targetSdkVersion设置为23及以下
,也是可以正常抓包,但是假如是抓别人的应用,同时别人又做了防止反编译措施的话,这个方案就不适用了;
3、在应用的res/xml
目录下添加文件network_security_config.xml
,设置信任用户证书,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><!-- 设置允许http明文传输--><base-config cleartextTrafficPermitted="true"><trust-anchors><!-- 设置信任系统级别证书--><certificates src="system" /><!-- 设置信任用户自定义证书,设置之后才能用fiddler之类的抓取https请求,出包最好不要设置,防止被抓包--><certificates src="user" /></trust-anchors></base-config>
</network-security-config>
然后application
标签下设置属性:android:networkSecurityConfig="@xml/network_security_config"
,这个方案也是仅适用于有android基础同时懂反编译的人员使用
【一劳永逸解决篇】
究其根源,targetSdkVersion >= 24
的应用在android 7.0+
系统的设备中之所以没法被抓包,是因为android 7.0之后的应用是默认只信任系统证书,不信任用户证书,那么我们可以想办法将Fiddler证书装到系统证书目录下,伪装成系统证书,那么就不存在因为fiddler证书不被信任而无法抓包的问题了
一、 导出Fiddler证书
1、下载安装Fiddler抓包工具,下载完成之后先不要点击打开运行
2、下载fiddlercertmaker.exe这个Bouncy Castle证书生成器
,因为新版本的Android拒绝超过两年有效期的证书,双击下载好的fiddlercertmaker.exe
(确保已关闭Fiddler),会弹出提示导入证书成功这个对话框
3、将Fiddler的证书导出到电脑,点击Tools
-> Options
-> HTTPS
-> Actions
-> Export Root Certificate to Desktop
导出成功之后,就可以在桌面上看到导出的FiddlerRoot.cer
证书文件
二、下载和安装openssl
1、下载Window版openssl, 点击这里打开页面,下拉到下面,选择最上面的64位EXE点击下载安装即可
2、安装完成之后,打开cmd命令行试试openssl命令是否生效,要是有如下输入信息,就说明安装成功:
三、证书格式转换与重命名
1、将Fiddler cer证书
转pem证书
,在cmd输入如下命令进行转换:
openssl x509 -inform DER -in C:\Users\Administrator\Desktop\FiddlerRoot.cer -out C:\Users\Administrator\Desktop\FiddlerRoot.pem
2、用md5方式显示pem证书的hash值, 在cmd输入如下命令:
openssl x509 -inform PEM -subject_hash_old -in C:\Users\Administrator\Desktop\FiddlerRoot.pem
从上面可以看到,咱们生成Fiddler证书的hash值是e5c3944b
3、将pem证书重命名,使用上面显示的值e5c3944b
对pem证书进行重命名,以下命令仅适用于window
,linux请用mv
ren C:\Users\Administrator\Desktop\FiddlerRoot.pem e5c3944b.0
注意:ren
命令第二个参数,直接输入新的文件名即可,不要输入完整路径,否则会报错
四、安装证书到系统目录(/system/etc/security/cacerts)
教程一:适合有Android基础的开发者
1、找一台root过的手机
或者任意一款模拟器
,因为只有root过的手机才有可能执行各种高权限的命令。我这边下载了一款叫夜神
android 9系统的模拟器
2、cmd输入adb connect 127.0.0.1:62001
,使adb跟夜神模拟器连接上
3、cmd 输入adb shell
,进入到夜神模拟器的终端shell中
4、cmd 输入 cd /system/etc/security
, 然后输入ls -l
, 可以看到cacerts
目录,我们只有读与执行
权限,并没有写入的权限
5、cmd输入chmod 777 cacerts
, 让咱们对该目录拥有写入权限,执行之后,在输入ls -l
可以看到我们已经获取到写入权限了
注意:有些小伙伴可能在其他模拟器输入chmod 777 cacerts
,会被提示Read-only file system
这种情况需要重新挂载一下系统,设置为可读写
,输入mount -o remount,rw /system
,然后再输入chmod 777 cacerts
,你会发现可以成功设置了
6、输入exit
退出shell终端,然后输入adb push C:\Users\Administrator\Desktop\e5c3944b.0 /system/etc/security/cacerts
,将事先转换好的Fiddler证书推送到夜神模拟器的/system/etc/security/cacerts
目录下
7、到这里就已经成功的把Fiddler证书安装到系统目录了,咱们点击模拟器的设置
-> 安全性与位置信息
-> 加密与凭据
-> 信任的凭据
-> 系统
,往下拉可以看到咱们的Fiddler证书
现在再打开Fiddler进行抓包,你会发现可以成功抓包了(记得模拟器在wifi那里设置好代理)
教程二:适合没有Android基础的小白
1、找一台root过的手机
或者任意一款模拟器
,因为只有root过的手机才有可能执行各种高权限的命令。我这边下载了一款叫夜神
android 9系统的模拟器
2、点击夜神模拟器侧边栏的电脑图标
,选择打开电脑文件夹
,会跳转打开电脑的目录C:\Users\Administrator\Nox_share
,将转换好的Fiddler证书e5c3944b.0
复制到ImageShare
目录下即可
3、下载MT管理器,拖拉到模拟器中安装完成,点击打开应用,左边打开Pictures目录就可以看到刚才电脑ImageShare
目录的Fiddler证书e5c3944b.0
4、右边点击进入到system/etc/security/cacerts
目录,然后长按左边的e5c3944b.0
文件,点击复制即可复制到右边打开的目录那里
5、一般人到这里以为就结束,但是你留意看一下刚才复制到system/etc/security/cacerts
目录下的e5c3944b.0
文件,你会发现跟其他已有的系统证书相比,e5c3944b.0
根本就没有读的权限,到时你到信任的凭据
也是没法找到这个Fiddler证书的,点击MT管理器
的左上角,找到打开终端
6、进入到终端之后,输入以下命令将e5c3944b.0
文件设置为可读即可
7、再看看system/etc/security/cacerts
目录下e5c3944b.0
文件的权限,发现确实有读权限了
8、咱们回到模拟器桌面,点击模拟器的设置
-> 安全性与位置信息
-> 加密与凭据
-> 信任的凭据
-> 系统
,往下拉终于看到咱们的Fiddler证书,尝试一下抓包也是没问题了
【拓展知识】
可能到这里有小伙伴会有疑问,系统证书是放在system/etc/security/cacerts
目录下,那么假如是安装的用户证书是在保存在哪个目录下,其实就保存在data/misc/keystore
目录下
【注意事项】
雷电4模拟器经过上述设置之后,你会发现依然是没法成功抓包,这时需要允许以下命令给雷电4设置全局代理
adb shell settings put global http_proxy <代理ip>:<代理端口>
其中adb在模拟安装目录可以找到
Android 7.0+模拟器Fiddler抓包详细教程相关推荐
- fiddler 抓包详细教程
为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始. 结合抓包工具讲http协议更容易学一些. 抓firefox上htt ...
- 夜神模拟器+Fiddler抓包测试App
前言 最近公司要求前端小姐姐开始用uniapp做App了,后端这边接口安全是用的security(历史原因),讲真我不太喜欢用这个,好多年没有用这个了.今天主要是跟大家分享下用模拟器测试app + F ...
- 使用Fiddler对手机APP抓包详细教程
使用Fiddler对手机APP抓包详细教程 在实现用Fiddler对手机APP抓包过程中遇到了两个很棘手的问题,一个是设置代理后手机就上不了网,在手机上下载证书一直提示下载失败,第二个就是在fiddl ...
- Fiddler抓包使用教程-扫盲篇
Fiddler抓包使用教程-扫盲篇 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72823370 本文出自[赵彦军的博客] 1.什 ...
- Fiddler抓包使用教程-安装配置
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72876628 本文出自[赵彦军的博客] Fiddler是什么? Fiddler是一 ...
- Fiddler抓包简易教程
由于本人能力有限,文中若有错误之处,欢迎指正. 转载请注明出处:http://www.jianshu.com/p/9e05a2522758 Fiddler是什么? Fiddler是一个http协议调试 ...
- Fiddler抓包使用教程-会话图标
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72933882 本文出自[赵彦军的博客] 使用fiddler抓包时,会看到左侧按照顺 ...
- Fiddler抓包使用教程-过滤
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72929800 本文出自[赵彦军的博客] Fiddler抓包可以完成我们移动开发者的 ...
- 安卓 未root 虚拟机 断网 配置抓包详细教程
考虑到多数人没有抓包经验,甚至没听说过"root"一词,本教程基于一台普通未root安卓手机进行抓包教程,虚拟机抓包进入APP出现断网情况解决方案. 抓包工具 1.Httpcana ...
最新文章
- Server.Transfer()與Response.Redirect()的區別
- Android-一张图理解MVP的用法
- python随机抽取人名_python的random
- 用js来实现那些数据结构12(散列表)
- oracle outln用户,Oracle用户解锁
- php到期自动过期,PHP实现页面长时间无操作,自动过期函数
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- python生成器推导式_python之推导式and生成器表达器笔记及面试坑
- 6.3深度优先遍历和广度优先遍历
- LAYA_展示富文本
- 微信小程序开发(十五)小程序使用scrollview实现滚动导航栏
- android 获取alertdialog的view,Android开发实现AlertDialog中View的控件设置监听功能分析...
- Android弹性滑动在自定义View中的高级应用
- 欧拉折线法解常微分方程C语言,第五章:常微分方程数值解法第一节欧拉法
- VFB组件:Picture控件(画板)
- 数字图像处理实验之图像压缩
- UR3构型机器人MATLAB仿真
- win7,如何快速显示桌面
- 如何创建编辑维基百科?
- 声卡内录——概念简记