美文网首页
Fiddler解决Tunnel to 443的问题

Fiddler解决Tunnel to 443的问题

作者: 静静地就好 | 来源:发表于2021-02-20 16:27 被阅读0次

    一、问题

    1、在正常设置抓取HTTP的网络数据后,手机抓包发现请求数据出现Tunnel to 443的问题:

    图1

    二、解决

    1、检查抓包设置是否正确,可以参考我之前的文章

    Fiddler手机抓包

    Fiddler 抓取HTTPS的网络数据

    2、检查设置无误后,发现还是不可以,网友提示可以设置脚本解决

    脚本在此

    varhosts ='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);

    }

    原话注释:这段代码的作用是判断如果这些指定的域名上有从浏览器传来CONNECT的请求时,直接返回一个假的Response,这时Fiddler不会再试图去让请求的实际响应者回应这个CONNECT请求,而是自己返回了一个请求。浏览器在收到这个请求以后不明就里,认为是服务器已经返回了安全信息,于是便愉快地继续发送请求。Fiddler在收到之后的请求,会将URL中的https替换为http,端口强制更换为80,再发给请求的实际响应者。多重启几次fiddler,最终你会发现,所有的https请求,都完美的被抓取了

    3、实际上,我遇到的问题不是以上脚本解决的,因为我可以捕捉到其他的请求

    图2

    4、后面几经思考,是因为小程序抓包的时候需要打开调试模式,打开调试模式后,我就可以正常抓取到小程序的请求了

    图3

    5、还有些人说443可能是因为证书过期导致的,如果是证书过期的话,那么重新安装证书应该就可以了

    三、拓展

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

            }

    图4

    2、效果如下

    图5

    相关文章

      网友评论

          本文标题:Fiddler解决Tunnel to 443的问题

          本文链接:https://www.haomeiwen.com/subject/fyqxfltx.html