提琴手,欺骗引荐来源不工作,因为它应该

Fiddler , Spoofing Referer not working as it should

我正在尝试使用 javascript 调用网络服务 api,如下所示。


var url = "https://...";

let formData = new FormData();
formData.append("...", "...");
formData.append("...", "...");
formData.append("...", "...");

let promise = fetch(url, {
  method: "POST",
  body: formData
});

promise.then(result => {
    console.log(result);
});

响应的状态为 200 OK,但响应文本表示您无权执行该操作。

在与邮递员调查请求失败的原因时。我发现添加值为 api 的服务器域名的 Referrer Header,最终返回了正确的响应。 api 的服务器似乎启用了一些引荐来源安全性,不允许 api 被并非来自该服务器的请求访问。

为了继续进行开发和测试,我安装了 fiddler,目的是在将请求发送到 api 的服务器之前拦截请求并更改引用 header。

Fiddler 版本:v4.6.20171.26113。

操作系统:linux debian

Firefox:版本 60.9.0esr(64 位)

我尝试访问的 api 是使用 https 访问的,因此我需要解密流量。 所以我去了 Fiddler -> Options -> HTTPS -> action 并在桌面上导出了根证书。之后,我在 Firefox 浏览器中添加了证书(Manage Certificated -> Authorities-> Imported the certificate extracted from fiddler)。 比我去 Fiddler -> 选项 -> HTTPS -> 启用解密 Https 流量。 我还配置了firefox的手动代理配置去提琴手(代理:本地主机,端口:8888)。

做完上面的配置后,我的网络就没了。我搜索了一下,发现这是新版 TLS 1.3 的问题。我将 firefox TLS 版本切换为 TLS 1.2 (security.tls.version.max=3) 版本。完成这些操作后,互联网访问恢复了。

我在api (bpu url) 的url 中设置了一个断点。我能够成功拦截并成功更改 Referrer header 但是当我按下 运行 完成并检查 firefox 网络中的响应时,Referer 似乎没有更改。即使我用 fiddler 拦截并更改了 header。为什么在单击 运行 完成后,我使用 Fiddler 所做的更改没有被保存?

此致,

兰多。

它解决了我的问题是:

  • 安装fiddler后重启电脑
  • 删除fiddler导出的证书
  • 转到菜单 HTTPS -> 操作 -> 将根证书导出到桌面
  • 将证书添加到 firefox (Manage Certificated -> Authorities-> Imported the certificate extracted to Desktop from fiddler).
  • 检查firefox中是否有代理设置,应该是手动设置的(代理:localhost,端口:8888),8888是fiddler的端口
  • 进入firefox about:config,降级tls版本。降级 tls 的配置:security.tls.version.max=3
  • 转到 Fiddler 菜单 HTTPS 并检查解密 HTTPS 流量

按照上面的步骤,我成功拦截并修改了HTTP请求头和响应。