之前使用的fiddler4和雷电模拟器3进行抓包,最近在使用模拟器访问app内嵌的网页(vue编写的)时发现雷电3无法访问加载vue编写出的网页。所以决定换到雷电4。当前下载的版本是雷电模拟器4.0.82。按照之前的配置雷电3的方式配置雷电4的代理后发现无法使用fiddler进行抓包,根据网上大佬们的指导,进行多次尝试,最后得以成功。将此次抓包配置步骤记录下来,以便后续查看。

原因分析:

雷电4使用的是安卓7,安卓7对用户自行安装的证书不再信任,所以造成无法抓包。因此解决方式就是将证书制作成为系统证书。通过git bash命令窗口进行操作:

进入git bash

1.将fiddler生成的证书,转换为.pem文件

Administrator@LAPTOP-3K7R226R MINGW64 ~
$ openssl x509 -inform DER -in C:\\Users\\Administrator\\Desktop\\FiddlerRoot.cer -out C:\\Users\\Administrator\\Desktop\\fiddler.pem

2.解析出证书的hash值(因为安卓证书文件名是根据hash值存的)。

Administrator@LAPTOP-3K7R226R MINGW64 ~
$ openssl x509 -inform PEM -subject_hash_old -in C:\\Users\\Administrator\\Desktop\\fiddler.pem | head -1
269953fb

3.将该hash值作为新的文件名以".0"结尾。 

Administrator@LAPTOP-3K7R226R MINGW64 ~
$ cat C:\\Users\\Administrator\\Desktop\\fiddler.pem > C:\\Users\\Administrator\\Desktop\\269953fb.0

Administrator@LAPTOP-3K7R226R MINGW64 ~

4、将新命名好的.0文件,通过雷电模拟器4(需要开启ROOT权限)自带的文件管理器,将此文件放置到 /system/etc/security/cacerts

由于某些模拟器 /system 属于系统文件(只读),无法直接通过文件管理器直接移动,甚至无法访问根目录。那么这里我采用 adb命令 执行。

C:\Users\Administrator>adb shell

 可用看到.0文件已经存在共享目录了

aosp:/ # cd /sdcard/Pictures/
aosp:/sdcard/Pictures # ls
269953fb.0  Clash for Android.apk  cache  ic_launcher.png  ldUserInfo

 当我们使用命令的时候,提示文件只读 没有写操作,因此需要重新挂在/system目录c

aosp:/sdcard/Pictures # mv 269953fb.0 /system/etc/security/cacerts/
mv: /system/etc/security/cacerts//269953fb.0: Read-only file system

重新挂载,并执行移动

1|aosp:/sdcard/Pictures # su
1|aosp:/ # mount -o rw,remount /system
aosp:/ # mv /sdcard/Pictures/269953fb.0 /system/etc/security/cacerts/

 进入目录对其进行赋权 并重启模拟器

aosp:/system/etc/security/cacerts # chmod 777 269953fb.0

重启雷电模拟器4后,在设置-安全-信任的凭据-系统中找到fiddler证书,则安装证书成功。

安装成功后,按照配置雷电模拟器3时的操作步骤应该是在wifi设置中设置fiddler代理。但是通过网上大佬们的分享以及自己实践发现,雷电模拟器4中wifi设置的代理配置是无效的。解决方式多样,目的就是真正成功的设置代理。这里使用的是adb方式设置雷电模拟器的代理。

给雷电模拟器设置全局代理

C:\Users\Administrator>adb shell settings put global http_proxy 192.168.1.52:9999

C:\Users\Administrator>

设置后重启雷电模拟器4,即可发现能够使用fiddler进行抓包操作。

顺便把 Fiddler设置截图如下

 

 

 

 

Logo

前往低代码交流专区

更多推荐