笔记本连着办公室 Wi-Fi,网线也插着,VPN 适配器仍然存在。你的 PAC 文件询问 myIpAddress() 自己位于哪个网络。这听起来合理,直到它拿到属于错误适配器的地址。

缺失的细节是:该函数只返回一个地址。它不是所有接口的清单,也不会联系网站去发现你的公网 IP。私有地址,甚至回环备用地址,都无法告诉你代理请求将使用哪个出口地址。

一台有多个地址的机器只得到一个答案

网卡选择属于 PAC 实现。旧建议让你调整 Windows 适配器顺序,可能只描述某个特定浏览器和操作系统版本,并不是通用的好办法。Chromium 记录了自己的选择算法与多宿主限制;其他客户端不必做出同样的选择。

先确定受影响的浏览器实际提供的值,再与脚本中的子网判断比较。请在 Wi-Fi、以太网和已批准的 VPN 连接上分别进行。看起来意外的地址仍可能符合实现的规则。

让判断少依赖猜测

在可行时,根据目标主机名选择代理,而不是依据假定的客户端接口。如果必须检测网络,请使用组织可控、明确且有文档记录的信号。基于 DNS 的检测也有失败模式,因此要定义该信号不可用时该怎么办。

某些实现提供 myIpAddressEx()。采用前先确认其支持情况和返回格式;它不是单个 IPv4 字符串的直接替代品。最后,独立验证最终的请求路径。正确识别办公子网与真正到达预期代理,是两个不同的结果。

相关文章