当使用招,它会弹出一个警告对话框。
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”,有没有什么办法来禁用提琴手改变呢?
从我的书 :
交换主机头
当小提琴手获得其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;
}
}
你可以用规则做到这一点。
进入自定义规则,并找到函数: OnBeforeRequest(oSession: Session)
然后添加以下为函数的最后一行:
if (oSession.HostnameIs("proxy.music.pp.com")) { oSession.host = "119.147.22.41"; }
我不明白什么是“URL主机”应该是 - 我的意思是,通常情况下,只有在HTTP主机头。
仔细一看,看来这违反了发生在初始代理“设置”请求时,它看起来像这样:
CONNECT targaryen:45633 HTTP/1.1
Host: targaryen
这是错误对我来说很有意义。
我无法得到我所需要对现有的答案,但埃里克法的回答给了我,我需要什么来解决我的问题。 我有一个问题,我打电话通过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;
}
}
把这个错误:
它改变了这个: