在网页中运行的脚本没有通用设置可以改变浏览器的出站代理。浏览器扩展可以拥有额外权限,但它运行在不同的安全和配置模型之下。

这一区别在旧的论坛回答中常常丢失。使用特权 Firefox 内部接口、旧式扩展模块或已废弃的 add-on SDK 的代码从来不是普通网页 API。把这样的代码片段粘贴到页面里,并不会获得那些权限。

使用浏览器的扩展 API

Firefox 扩展可以在具备所需权限时使用有文档记录的 proxy.settings API。Chrome 提供自己的代理扩展 API。两者的配置模型并不相同;请针对目标浏览器检查清单要求和支持的设置。

扩展还应考虑控制同一设置的政策或其他扩展。API 调用成功并不是假设每个目标现在都走你预期路径的理由。请检查结果配置,并保留用户恢复它的能力。

改变 fetch 的 URL 就改变了目标

网页可以调用代替它转发请求的应用服务器,但须遵守浏览器的 Web 规则。在这种设计中,浏览器连接到那台应用服务器。它并没有安装通用浏览器代理,也没有改变无关标签页使用的路径。

同样,发送带有另一个 IP 地址的请求头并不会改变连接的源地址。目标可以按自己的策略解释可信的转发元数据,但网络路径是另一回事。

如果你的目标是用于浏览的换 IP 代理,请从免费代理列表中选择合适的条目,并配置受支持的浏览器代理或已授权的扩展。如果目标是某个 Web 应用的远程抓取,请围绕它真实的服务器与浏览器边界来设计该功能。

相关文章