Android调试工具 >> 抓包工具Fiddler4 全面总结,及拟态美

blog_title.jpg


目录

  • 简介
  • 资源下载
  • 正文
    • Fiddler4 安装
    • Fiddler4 options配置
    • Fiddler4 配置证书
    • 重启Fiddler 和 Chrome浏览器
    • Fiddler4客户端 重置证书
    • Fiddler4 手机端配置
      • PC端网络IP获取
      • 手机端配置证书
    • Fiddler tunnel to 问题
      • FiddlerScript的配置(1)
      • Tunnel to 终极解决方案(2)
        • VirtualXposed 与 Justtrustme配合抓包
    • Fiddler 抓取不同链接的颜色显示优化
  • 总结

简介

这是一篇对于Fiddler抓包比较全面的文章,包含如何解决抓包Tunnel to 脚本等

Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,Fiddler可以也可以让你检查所有的HTTP通讯,设置断点,以及Fiddle所有的“进出”的数据(我一般用来抓包),Fiddler还包含一个简单却功能强大的基于JScript .NET事件脚本子系统,它可以支持众多的HTTP调试任务。

Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

资源下载

若官网下载失败,可使用便捷下载地址

  1. Fiddler4

    Fiddler4官网

  2. VirtualXposed

    virtualxposed官网

    支持32位:
    virtualxposed32位优化版(虚拟框架)v1.0

    支持64位:
    virtualxposed64位(虚拟框架)v1.0
    virtualxposed64位(虚拟框架)v1.0:便捷地址

  3. JustTrustMe4
    justtrustme4
    justtrustme4 便捷地址
    Github JustTrustMe4

正文


Fiddler4 安装

(1)Fiddler官网地址:www.telerik.com/fiddler
(2)打开官网,选择经典版下载。

对于Fiddler EveryWhere等项没有具体使用过,根据实际情况下载选用

image.png

(3)填上邮箱,勾上协议,点击【Download For Windows】

image.png

(4)安装

image.png

根据自己需要,可以修改路径,修改后,点击【Install】,即可安装成功。

Fiddler4 options配置

(1)打开fiddler,点击 Tools > Options ==> 配置HTTPS

勾选如图内容

image.png

(2) Tools > Options ==> 配置Connections

点击 Connections > 在 Fiddler listens on port 中配置端口号(一般配置为8888),勾选【Allow remote computers to connect】、【Act as system proxy on startup】、【Monitor all connections】

image.png

  • 配置完成,点击 OK

Fiddler4 配置证书

(1) Tools > Options > HTTPS > 点击【Actions】,选择信任根证书

image.png


image.png


image.png

  • 根据提示,完成证书的安装信任即可

(2)导出证书到桌面,在PC安装证书

image.png

(3)打开Chrome浏览器,在浏览器中导入证书

image.png


image.png


image.png

  • 将之前从Fiddler中保存到桌面的证书,导入到上述位置。

重启Fiddler 和 Chrome浏览器

Fiddler4客户端 重置证书

image.png

  • 至此,Chrome访问例如百度,在Fiddler4客户端就可以抓到HTTPS的包了。
  • 看例图,大致界面情况

image.png

Fiddler4 手机端配置

在PC 端
配置完毕所有的工具,接下来也要配置手机端的IP、端口、安装证书、目的在一个局域网环境

PC端网络IP获取

(1)cmd 命令行获取ip地址

windows 按键 + R -> cmd 调出命令行
指令:ipconfig

image.png

(2)或者在Fiddler4客户端也可以查看

鼠标点击最右侧的三角图标,悬停在“onLine”

image.png

手机端配置证书

必须: 电脑端和手机处于同一网络下

  • 手机 > settings(设置) > WLAN >进入已经连接网络的配置项

image.png

  • 点击代理,选择【手动】

image.png

  • 打开手机浏览器:输入 IP地址:端口号,点击FiddlerRoot certificate 然后安装证书

image.png

  • Android手机一般为通过储存空间安装,会弹起一个弹窗,凭据用途,选择为【VPN和应用】,点击确认。

Fiddler tunnel to 问题

在正常设置抓取HTTP的网络数据后,手机抓包发现请求数据出现Tunnel to 443的问题:
会出现HTTPS类型链接 “fiddler tunnel to 443或者其他tunnel to…”

image.png

  • 思路

检查以上一路的配置是否正确
检查是否在同一个局域网,并且配置了证书
检查Fiddler是否配置了options 并且配置正确
若以上确认无误:

在如上设置成功过后!!仍然发现有些https请求显示Tunnel to 443!!!!

不是全部的https都显示Tunnel to 443,如果是全部,说明你上面那些步骤没有做好!!请参照上面的或者其他人的文章,把证书清理干净了重新来一遍!!!

如果部分请求出现Tunnel to 443的情况,那么继续!!

FiddlerScript的配置(1)

image.png

(1)打开 FiddlerScript
(2)选中 OnBeforeRequest,
这一步可以快速定位到 Script 代码中的OnBeforeRequest部分
(3)在 OnBeforeRequest 函数下面配置下述代码:

image.png

 //在这个 OnBeforeRequest 方法里,这段代码放在最后一个方法大括号后边。
 //解决HTTPS TUNNEL TO....
        
 var hosts = 'zkd.me develop.dog';
 FiddlerApplication.Log.LogFormat("Logger session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
   if(hosts.indexOf(oSession.host) > -1){
            FiddlerApplication.Log.LogFormat("Capture session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
            if(oSession.HTTPMethodIs('CONNECT')){
                FiddlerApplication.Log.LogString('create fake tunnel response');
                oSession['x-replywithtunnel'] = 'FakeTunnel';
                return;
            }
 
            if (oSession.isHTTPS){
                FiddlerApplication.Log.LogString('switch https to http request');
                oSession.fullUrl = oSession.fullUrl.Replace("https://","http://");
                oSession.port = 80;
            }   
 
            FiddlerApplication.Log.LogFormat("Processed session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
        }

       
  • 如果试着比较一下和别人文章里贴的这段代码,就会发现我这里少了一句。就是这一句,在遇到这个问题时被坑了一下。
<span style="font-family:'KaiTi_GB2312';font-size:16px;">static function OnBeforeRequest(oSession: Session){  </span>

注意:这一句,根本不需要。

image.png

(4)点击Save Script,完成了设置以使其生效。

(5)重启几次Fiddler 客户端。

多重启几次fiddler,最终你会发现,所有的https请求,都完美的被抓取了!!!

  • 这样配置的用意,简单一说:
    hosts变量定义的域名就是我们想让Fiddler帮我们一起欺骗浏览器的域名。

    这段代码的作用是判断如果这些指定的域名上有从浏览器传来CONNECT的请求时,直接返回一个假的Response,这时Fiddler不会再试图去让请求的实际响应者回应这个CONNECT请求,而是自己返回了一个请求。

    浏览器在收到这个请求以后不明就里,认为是服务器已经返回了安全信息,于是便愉快地继续发送请求。Fiddler在收到之后的请求,会将URL中的https替换为http,端口强制更换为80,再发给请求的实际响应者。

Fiddler 抓取不同链接的颜色显示优化

HTTP请求和HTTPS请求混在一块会看的眼花,通过脚本保存,可以让HTTP请求和HTTPS请求显示不一样的颜色。

如上,配置打开 FiddlerScript
选中 OnBeforeRequest,
这一步可以快速定位到 Script 代码中的OnBeforeRequest部分
OnBeforeRequest 函数下面配置下述代码:

 //在这个 OnBeforeRequest 方法里,这段代码放哪个位置都可。
  if(oSession.isHTTPS && oSession.url.indexOf(oSession.host)> -1){ 
     oSession["ui-color"] = "blue"; 
  } 
  
  if(!oSession.isHTTPS && oSession.url.indexOf(oSession.host)> -1){ 
    oSession["ui-color"] = "green"; 
  }

       

image.png

image.png


image.png

Tunnel to 终极解决方案(2)

为什么会返回Tunnel to 呢,网上给的解释是安卓系统 7.0 以上的,里面有个 ssl pinning,这个东西是对客户端的证书进行验证,如果遇到不信任的证书,就会断开连接,不继续请求。所以这里使用了 VirtualXposed(框架虚拟机) + justtrustme(绕过SSL证书)方法(软件链接已放在文章开篇头部)。

VirtualXposed 可以在非root手机上运行xposed插件。通过xposed插件做到各种操作,如:模拟定位、监听用户行为等。

VirtualXposed 是基于VirtualApp和Epic在非ROOT环境下运行Xposed模块的实现(支持5.0~10.0)

  • 由于google play不允许32位应用上架,0.20之后不再支持32位应用
  • 但目前还有32位资源,资源链接放在文章开头了

(x86) VirtualXposed_0.18.2.apk
(x64) VirtualXposed_0.20.3.apk

配置

(1)安装【VirtualXposed】后打开软件,若出现【图2】的弹窗,点击弹窗外部即可,点击【图3】标记位置可以打开【设置】页面。

image.png


image.png


(2)安装应用:先将插件、测试应用安装到手机上,进入【VirtualXposed】,点击【添加应用】,选择插件、测试应用,点击【安装】。弹窗中选择【VIRTUALXPOSED】,太极 的话虽然稳定,但不符合当前我们要使用的目的。
image.png


image.png


(3)激活设备:【图3】页面向上划,即可进入应用列表,点击【Xposed Installer】,进入激活页面。【图8】为激活结果。

image.png

(4)安装插件:在【设置】页面点击【模块管理】,勾选我们安装的插件,返回后在【设置】页面点击【重启】,如【图11】所示,此时插件已经安装完毕。

image.png

(5)日志获取:

点击【Xposed Installer】,点击左上角按钮,进入侧边栏。点击【日志】,即可看到日志数据。点击页面右上角按钮,可以选择【立即清理日志】清除之前的日志。

然后打开测试软件,再次进入日志页面,出现【图14】内容。获取到了测试包getImei的行为,点击图中按钮可以进行保存。

image.png


Fiddler与手机配合抓取

如果上述手机上抓取方式,有时候不方便的话,或者不想用上述方法,可以使用另一种方式:

  • 重启之后,再打开 VirtualXposed,点击我们刚刚添加进来的APP(你要抓取的APP),操作APP就可以在电脑的fiddler抓到包了。

image.png

  • VirtualXposed打开要抓取的App

image.png

总结


1.Fiddler安装与配置

2.Chrome安装证书

3.手机配置IP,PORT,安装证书

4.Tunnel to 第一种解决方式,配置Script脚本

5.Tunnel to 第二种解决方式,VirtualXposed 与 Justtrustme配合抓包

6.Fiddler显示上的优化等

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYYZuuPb' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片