即使PAC文件正确地让另一个网站走代理,IP检测页面仍可能显示你的直连地址。先检查IP检测页面自身受哪个分支控制:

function FindProxyForURL(url, host) {
  if (host === "example.com") {
    return "PROXY 203.0.113.10:8080; DIRECT";
  }
  return "DIRECT";
}

这段脚本为example.com提供HTTP代理,随后是DIRECT。其他所有主机都明确直连,因此另一个域名上的IP检测页根本不会测试代理分支。使用前,将文档示例端点换成预期HTTP代理;在公共代理符合策略时,可以从HTTP代理列表寻找候选。

分号分隔候选路径。DIRECT允许不经代理建立连接;如果被选中,目标就能看到这条直连路径的出口。强制使用代理的策略,不能依靠一条在代理不可用时有意允许这种回退的规则。

浏览器决定如何处理候选失败,也可能记住失败的代理。网站返回HTTP错误,不自动等同于代理不可达。因此,仅看脚本里的第一个候选,无法确定实际使用了哪条路径。

PROXY IP:port表示普通HTTP监听端点。支持时,它可以通过CONNECT承载HTTPS;不会仅因为网站使用HTTPS,就要求独立端点。另外,只使用浏览器实际提供的URL信息:HTTPS路径和查询部分可能在PAC求值前被剥离。

先评估预期目标的结果,再发送一个由同一规则控制的新请求。选择修正方式前,区分匹配错误、端点不可达和被允许的直连回退。

相关文章