Fiddler_Https_浏览器与手机端_抓包_手顺书

Fiddler的下载

打开官网,官网下载地址是Download Fiddler Web Debugging Tool for Free by Telerik

Fiddler的配置

由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。

打开Fiddler,点击工具栏中的Tools—>Options

点击Actions,点击第二项:Export Root Certificate to Desktop,这时候桌面上会出现证书FiddlerRoot.cer文件,点击OK设置成功,关闭fiddler。

一定要把上面勾选完再导出证书!!!!

浏览器的配置

PC端,在浏览器中导入证书FiddlerRoot.cer,以谷歌浏览器为例说明,在浏览器上输入: chrome://settings/  然后进入高级设置,点击管理证书。

 

浏览器不导入证书的话,上网会一直报不安全的链接!!!

至此,已经可以监听PC端浏览器的https请求了。

手机端的配置

以IOS手机为例 (确保手机和电脑在同一个局域网内,都连公司wifi操作即可)

修改WIFI网络,服务器号为电脑IP地址

 

 

重启Fidder

安装手机证书,在手机浏览器一栏输入电脑的IP地址和端口号
这里我是192.XXX.X.XX:8888进入一个网页,点击最下面那个FiddlerRoot certificate下载证书,下载成功后在设置里面安装,安装步骤:

 

 对证书进行信任

 

关于安卓手机:打开高级设置->安全->从SD卡安装证书->找到证书文件->点击后为证书命名点击确定即可安装成功。

以上配置好后,就可以对手机进行抓包测试了,注意fiddler需要重启

可能会遇到的问题 出现Tunnel to 443

打开fiddler,在右侧的选项卡里找到FiddlerScript标签,在顶上的  Go to 的下拉列表里选择“OnBeforeRequest”。

 将下面代码加入方法尾部,也就是最后一个括号的前面。

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);
        }
        FiddlerApplication.Log.LogFormat("Logger session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);

(hosts变量定义的域名,让Fiddler欺骗浏览器的域名。代码解释:如果这些指定的域名上有从浏览器传来CONNECT的请求时,直接返回一个假的Response,这时Fiddler不会再试图去让请求的实际响应者回应这个CONNECT请求,而是自己返回了一个请求。浏览器在收到这个请求以后,认为是服务器已经返回了安全信息,继续发送请求。Fiddler在收到之后的请求,会将URL中的https替换为http,端口强制更换为80,再发给请求的实际响应者。)

Tunnel to 443 对于 安卓 有些版本需要VirtualXposed框架

一些辅助设置

1、HTTP请求和HTTPS请求混在一块会看的眼花,我们可以小小的设置一下,让HTTP请求和HTTPS请求显示不一样的颜色。

在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";  
        }

2、查看接口响应时间

工具栏中rules->customize Rules 

打开文件吧如下代码添加到headers中

function BeginRequestTime(oS: Session)
{
if (oS.Timers != null)
{
return oS.Timers.ClientBeginRequest.ToString();
}
return String.Empty;
}
public static BindUIColumn("Time Taken")
function CalcTimingCol(oS: Session){
var sResult = String.Empty;
if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
{
sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString();
}
return sResult;
}

添加成功后如下图所示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草柑橘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值