Fiddler在抓取https数据包时如何解决Tunnel to 443问题?

Fiddler这款工具就不详细介绍了,网上的资料一抓一大把。

它作为抓取web和手机的数据包是一个利器。

但是对于刚刚安装好fiddler的施主们来说,打开fiddler仅仅能够抓取的是HTTP的请求----这显然是不够的!

在平常的工作中,很多产品或系统都是https的请求,没有经过设置的fiddler对于这些高难度妖精是毫无办法滴!

但是我们遇到困难也不能退缩呀,下面贫僧就给大家介绍下怎么搞定https请求!

另外文章还介绍了一个小方法,让你的fiddler请求列表看起来更清晰更漂亮。

此篇文章参考了一些其他博主,并经过贫僧亲身试验而总结出来的。因为贫僧发现其他的文章里有一些坑,会让人摸不着头脑。

---------------------------------下面是正文开始的分割线------------------------------------------

1、解决Tunnel to 443的问题
1、首先安装Fiddler

2、安装成功后,点击上访的Tools-->Options

3、分别按照下面两张图设置 HTTPS、connections两个页面。

4、点击“OK”以后Fiddler会弹出一个对话框问你是否要让Windows信任Fiddler生成的自签证书,选择“yes”以后,还会弹出一些对话框,直接“yes”或“OK”即可。

上面是抓取https请求的常规操作!!!!!基础操作!!!!!

贫僧主要想讲的不是这个,而是!在如上设置成功过后!!仍然发现有些https请求显示Tunnel to 443!!!!

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

如果跟贫僧一样,是部分请求出现Tunnel to 443的情况,那么请继续往下看!!!

先简单概括一句,要加点代码在fiddler里面。

1、打开fiddler,在右侧的选项卡里找到FiddlerScript标签(没有找到该标签的施主去http://www.telerik.com/download/fiddler/fiddlerscript-editor下载安装即可)

2、点击FiddlerScript这个标签,会出现很多很多的代码。

3、这些不用管,在顶上的  Go to 的下拉列表里选择“OnBeforeRequest”。

4、下面是重点!!!拉到OnBeforeRequest方法的结尾。

这里千万千万要注意,别跟滚车轱辘似的使劲滚鼠标滚轮一下子拉到整段代码的最下面。

记住:是拉到OnBeforeRequest方法的结尾!!!

在你选择了“OnBeforeRequest”这个选项时,整个页面会自动定位到这个方法的开始之处!

如图

慢慢往下拉,别太快了,拉到这个方法的最后就停下来。

5、上面这个位置一定要找准!!!找准地方后,在这个方法的最后一个大括号后面,插入以下代码。

var hosts = 'yangkeduo';// 这里指定你要过滤的域名
         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);
}

6、点击头上的“Save Script”,就完成了设置。

假如你这段代码粘贴的不对,它会有提示的,比如什么“仅在类定义内有效”啊等等,如果出现,请检查粘贴位置、大括号什么的。

hosts变量定义的域名就是我们想让Fiddler帮我们一起欺骗浏览器的域名。

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

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

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

最后附上参考文章:

Fiddler中如何抓取app中https(443端口)数据 - 小马不黑 - 博客园

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Fiddler是一款用于抓包和分析网络流量的工具。如果您想要在Fiddler中使用HTTPS协议进行抓包分析,则需要对Fiddler进行一些配置,使其能够与目标网站建立加密连接。 其中一个常见的问题Fiddler无法通过隧道连接到443端口。这通常是由于系统代理设置的问题导致的。要解决这个问题,您可以尝试以下方法: 1. 在Fiddler中打开“Tools”菜单,选择“Options”,然后选择“Connections”选项卡。在该选项卡中,取消选中“Act as system proxy on startup”复选框。 2. 禁用或修改系统代理设置。在Windows操作系统中,您可以在“Internet选项”中找到代理设置,然后将其禁用或将代理地址和端口修改为与Fiddler相同的地址和端口。 3. 如果您使用的是HTTPS代理,请确保您已经安装了Fiddler的根证书。在Fiddler中,可以通过打开“Tools”菜单,选择“Options”,然后选择“HTTPS”选项卡来找到根证书的安装方法。 希望这些方法可以帮助您解决Fiddler隧道连接443端口的问题。 ### 回答2: 文本中提到“fiddler tunnel to 443 问题”,该问题是指在使用Fiddler抓包,需要将端口号修改为443才能正常捕获HTTPS请求的问题。这个问题是由于HTTPS请求使用加密传输,而Fiddler默认只能捕获HTTP请求,因此需要通过修改端口号的方式来实现HTTPS请求的抓包。 首先,需要在Fiddler的“Tools”菜单下选择“Fiddler Options”,进入设置页面。在“HTTPS”选项卡下,勾选“Decrypt HTTPS traffic”选项,并点击“Export Root Certificate to Desktop”按钮,将证书导出到桌面以便之后的安装。 接着,需要将证书安装到本地信任证书库中。在Windows系统中,可以通过双击证书文件并按照提示操作来实现。安装成功后,需要重启Fiddler,并在“Tools”菜单下选择“Options”菜单中的“HTTPS”选项卡,勾选“Capture HTTPS CONNECTs”选项。 最后,需要在Fiddler的“Rules”菜单下选择“Customize Rules”,并添加以下代码: static function OnBeforeRequest(oSession: Session) { if (oSession.isHTTPS && oSession.uriContains("yourdomain.com")) { oSession["x-overrideHost"] = "yourdomain.com:443"; } } 这段代码的作用是将指定的域名的端口号改为443,以便Fiddler能够正常捕获HTTPS请求。在添加完上述代码后,保存并重启Fiddler即可。 总之,“fiddler tunnel to 443 问题”可以通过上述方法解决,从而实现对HTTPS请求的抓包。同需要注意的是,由于HTTPS请求使用加密传输,因此在抓包需要遵循相关法规和道德规范,切勿用于非法用途。 ### 回答3: Fiddler是一款广泛使用的抓包工具,可以用于监视HTTP请求和响应。有候,我们需要在Fiddler上捕获加密的HTTPS流量,这就需要使用Fiddlertunneling(隧道)功能。 默认情况下,在Fiddler上不能直接抓取HTTPS流量。Fiddler使用的是自己生成的根证书来代理HTTPS流量,但大多数浏览器都不信任这个根证书,因此浏览器会提示安全警告。为了解决这个问题Fiddler提供了一个tunneling(隧道)功能,用于将HTTPS流量通过HTTPS隧道转发到Fiddler中,从而避免了浏览器检测证书的问题。 在Fiddler中,打开Tools->Options,选择HTTPS选项卡,勾选"Decrypt HTTPS traffic"和"Ignore server certificate errors"选项,然后单击"Actions"按钮,选择"Export root certificate to desktop",将证书保存到桌面。接下来,需要将该根证书导入到操作系统的受信任根证书颁发机构中,以便浏览器可以信任它。然后,重启Fiddler,选择"Rules"选项卡,打开Customize rules文件,在OnBeforeRequest函数中添加以下代码: if (oSession.HTTPMethodIs("CONNECT") && oSession.HostnameIs("localhost:443")) { oSession["x-replywithtunnel"] = "FakeTunnel"; return; } 保存并重新加载Customize rules文件,Fiddler就可以开始抓取HTTPS流量了。 总之,使用Fiddlertunneling(隧道)功能,可以轻松捕获HTTPS流量,从而帮助我们分析和调试网站的安全性及性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值