为什么你的 PAC 文件选错了网卡
一台笔记本可能拥有多个本地地址。基于 myIpAddress() 的 PAC 规则可能识别出与你预期不同的接口。
笔记本连着办公室 Wi-Fi,网线也插着,VPN 适配器仍然存在。你的 PAC 文件询问 myIpAddress() 自己位于哪个网络。这听起来合理,直到它拿到属于错误适配器的地址。
缺失的细节是:该函数只返回一个地址。它不是所有接口的清单,也不会联系网站去发现你的公网 IP。私有地址,甚至回环备用地址,都无法告诉你代理请求将使用哪个出口地址。
一台有多个地址的机器只得到一个答案
网卡选择属于 PAC 实现。旧建议让你调整 Windows 适配器顺序,可能只描述某个特定浏览器和操作系统版本,并不是通用的好办法。Chromium 记录了自己的选择算法与多宿主限制;其他客户端不必做出同样的选择。
先确定受影响的浏览器实际提供的值,再与脚本中的子网判断比较。请在 Wi-Fi、以太网和已批准的 VPN 连接上分别进行。看起来意外的地址仍可能符合实现的规则。
让判断少依赖猜测
在可行时,根据目标主机名选择代理,而不是依据假定的客户端接口。如果必须检测网络,请使用组织可控、明确且有文档记录的信号。基于 DNS 的检测也有失败模式,因此要定义该信号不可用时该怎么办。
某些实现提供 myIpAddressEx()。采用前先确认其支持情况和返回格式;它不是单个 IPv4 字符串的直接替代品。最后,独立验证最终的请求路径。正确识别办公子网与真正到达预期代理,是两个不同的结果。