前言:本文讲述fiddler抓取模拟器中数据包,话不多说来看正文。
目录
3.设置信任证书:使用adb命令,将安装好的证书挪到系统目录中。
解决雷电模拟器问题直接从这开始看,以上是报错处理,供其他模拟器参考分析。
环境准备:雷电模拟器、fiddler、adb
adb和fiddler下载地址:fiddler+adb.zip - 蓝奏云
思路:本文章可解决99%。fiddler模拟器抓包问题,比起解决问题,让大家了解原理思路更为重要,以下是思路流程图供君参考。
一、Fiddler设置
1.HTTPS:解密https流量、忽略不安全证书
2.连接设置:允许远程计算机连接
点击允许远程计算机连接,点确定保存
3.根证书安装:导出桌面安装证书
在桌面点击导出的证书进行下一步安装即可,全部默认一直点,点到导入成功为止。
Fiddler配置完成将其关闭重启。
二、模拟器设置
1.网络设置:桥接驱动安装,及开启桥接
安装网桥驱动,出现安装成功即可。
安装完成后点保存设置自动重启。
2.WLAN设置:设置fiddler代理
打开模拟器设置-打开WiFi菜单-修改wifi配置(有些模拟器有小笔头修改键,有些模拟器是鼠标长按会出现“修改网络”大同小异,可自行参照,核心就是修改连接wifi的手动代理,ip写本机,端口写8888 对饮fiddler软件里面的,如果端口占用在fiddler里面修改此处改成一致即可)最后点击保存!
2.证书安装:物理机ip:8888
打开模拟器浏览器,地址栏输入本物理机ip跟上8888端口,就是输入代理ip和端口。会跳转证书安装页面。
为什么要这样安装证书1.简单便捷2.可以变相去检测与物理机的连接是否正常
图片有点长,耐心按步骤点击。
3.设置信任证书:使用adb命令,将安装好的证书挪到系统目录中。
使用雷电模拟器的直接看
原-用户证书目录:/data/misc/user/0/cacerts-added/
新-系统证书目录:/system/etc/security/cacerts/
如果不移动安装好的证书,此处会出现不信任的证书,频繁弹出(可以看到组织单位是我们安装fiddler)。
此处需要提前开启,模拟器的root权限,否则无法su 切换用户(具体因模拟器而异:有些root权限要在模拟器里面开启,有些不需要,遇到无法su的问题,找找模拟器原因)
--------------------------------------------------------------报错分析-------------------------------------------------------
随即我们继续操作,将/data/misc/user/0/cacerts-added/的证书文件,移动到/system/etc/security/cacerts/,使其变为信任证书。
# 进入adb shell 工具adb shell# 切换root用户gracelte:/ $ su# 查看用户证书安装的名称127|gracelte:/ # ls /data/misc/user/0/cacerts-added/e5c3944b.0# 将用户证书挪至系统证书目录 /system/etc/security/cacerts/gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/mv: /system/etc/security/cacerts//e5c3944b.0: Read-only file system
在移动证书到/system/etc/security/cacerts/ 会报出问题
报错:mv: /system/etc/security/cacerts//e5c3944b.0: Read-only file system
报错原因:/system 是以只读的形式挂载上来的,所以无论你怎么chmod都无法修改其权限。
解决办法:重新挂载,挂载读写执行权限
gracelte:/ $ su# 重新挂载/system 文件夹:/ # mount -o rw,remount /systemmount: '/system' not in /proc/mounts
报错:mount: '/system' not in /proc/mounts
报错原因:在Android8.0以上通过以上mount命令,找不到/system代表的节点和拥有的权限信息,这是因为Android8.0之后谷歌加入了A/B system的特性,system分区跟ramdisk分区打包在一起,因此系统起来之后也就不存在system分区了,而是直接把system镜像挂载到/根目录上。所以/proc/mounts文件中没有包含/system的权限信息。
查看模拟器安卓版本:
# 进入adb shell 工具adb shell# 切换root用户gracelte:/ $ su# 查看安卓版本gracelte:/ # getprop ro.build.version.release9
解决办法:解锁磁盘,重新挂载
# 在windows窗口运行以下命令,不要进到adb shell 里面运行D:\platform-tools> adb root# 解锁分区(需要升级到最新版本adb,才有disable-verity工具)D:\platform-tools> adb disable-verity# 重新挂载,没加权限 表示rwx全部挂上D:\platform-tools> adb remount
报错:如果是旧版本adb会显示如下信息
networking: adb ppp [parameters] - Run PPP over USB. Note: you should not automatically start a PPP connection. refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1 [parameters] - Eg. defaultroute debug dump local notty usepeerdnsadb sync notes: adb sync [ ] can be interpreted in several ways: - If is not specified, both /system and /data partitions will be updated. - If it is "system" or "data", only the corresponding partition is updated.environmental variables: ADB_TRACE - Print debug information. A comma separated list of the following values 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given. ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
原因:旧版本adb不含disable-verity 工具包
解决办法:安装最新adb工具
报错:Failed to read fstab Maybe run adb root?
原因:雷电模拟器9把,这块直接界面化了,不需要通过disable-verity 解锁磁盘,但是其他种类模拟器会用到这个功能,大同小异,自己拿捏吧
解决办法:在模拟器设置,磁盘管理开启 system.vmdk可写入
-------------------------------------------------------------------------------------------------------------------------------
解决雷电模拟器问题直接从这开始看,以上是报错处理,供其他模拟器参考分析。
# 在windows窗口运行以下命令,不要进到adb shell 里面运行D:\platform-tools> adb root# 雷电模拟器,直接在设置打开磁盘写入功能# 重新挂载,没加权限 表示rwx全部挂上D:\platform-tools> adb remount# 进入adb shellD:platform-tools>adb shell# 查看用户证书位置gracelte:/ # ls /data/misc/user/0/cacerts-added/e5c3944b.0# 拷贝证书到目标文件夹gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/
# 雷电模拟器,直接在设置打开磁盘写入功能
将以上配置完重启模拟器和fiddler就可以抓包了
其他:
问题:fiddler 雷电模拟器 无法抓包,获取不到数据?
答案:有些按照我这个步骤执行的,还是无法抓包,应该是模拟器版本问题,使用adb工具将代理推上全局即可。
# adb.exe shell settings put global http_proxy 本机ip:fiddler端口adb.exe shell settings put global http_proxy 192.168.0.102:8888
来源地址:https://blog.csdn.net/weixin_43391813/article/details/130850778