小提琴手:如何禁用覆盖头主机(fiddler: how to disable overwrite H

2019-06-26 20:56发布

当使用招,它会弹出一个警告对话框。

Fiddler has detected a protocol violation in session #14.

The Request's Host header did not match the URL's host component.

URL Host:   proxy.music.pp.com
Header Host:    119.147.22.41

它表明小提琴手改变HTTP标头的主机“proxy.music.pp.com”,有没有什么办法来禁用提琴手改变呢?

Answer 1:

从我的书 :

交换主机头

当小提琴手获得其URL的主机头不匹配的要求,原有的主机值存储在会话标志X-Original-Host ,然后将Host值替换为URL解析主机。 下面的脚本,放在你的FiddlerScript的内部BeforeRequest功能,通过将请求路由到由原始主机头指定的主机反转行为。

if (oSession.BitFlags & SessionFlags.ProtocolViolationInRequest) 
{
  var sOverride = oSession["X-Original-Host"];
  if (!String.IsNullOrEmpty(sOverride)) 
  {
    oSession["X-overrideHost"] = sOverride;
    oSession["ui-backcolor"] = "yellow";

    // Be sure to bypass the gateway, otherwise overrideHost doesn't work
    oSession.bypassGateway = true;
  }
}


Answer 2:

你可以用规则做到这一点。

进入自定义规则,并找到函数: OnBeforeRequest(oSession: Session)

然后添加以下为函数的最后一行:

if (oSession.HostnameIs("proxy.music.pp.com")) { oSession.host = "119.147.22.41"; }


Answer 3:

我不明白什么是“URL主机”应该是 - 我的意思是,通常情况下,只有在HTTP主机头。

仔细一看,看来这违反了发生在初始代理“设置”请求时,它看起来像这样:

 CONNECT targaryen:45633 HTTP/1.1
 Host: targaryen

这是错误对我来说很有意义。



Answer 4:

我无法得到我所需要对现有的答案,但埃里克法的回答给了我,我需要什么来解决我的问题。 我有一个问题,我打电话通过IP地址的Web服务器,我不得不添加主机头,以得到正确的端点。 提琴手被更改主机头我打电话的IP地址,并删除我的主机头值,这引起了呼叫失败。 我添加了一行到Eric的脚本来解决这个问题。 我把规则到OnBeforeRequest在提琴手规则脚本。

 if (oSession.BitFlags & SessionFlags.ProtocolViolationInRequest) 
    {
        var sOverride = oSession["X-Original-Host"];

        if (!String.IsNullOrEmpty(sOverride)) 
        {
            oSession["X-overrideHost"] = sOverride;
            oSession["ui-backcolor"] = "yellow";
            oSession.oRequest["Host"] = sOverride;

            // Be sure to bypass the gateway, otherwise overrideHost doesn't work
            oSession.bypassGateway = true;
        }
    }

把这个错误:

它改变了这个:



文章来源: fiddler: how to disable overwrite Header Host