通过 Javascript 控制台测试代理自动配置 FindProxyForURL()

Testing Proxy auto-config FindProxyForURL() via Javascript Console

本文关键字:配置 FindProxyForURL Javascript 控制台 测试 代理 通过      更新时间:2023-09-26

是否可以通过从浏览器JavaScript控制台手动执行FindProxyForURL(url,host)函数来测试代理自动配置(PAC)脚本?

PAC 函数的内部实现(如 dnsDomainIs、shExpMatch、isInNet)是否可以从控制台访问?

或者,这些函数是否可以在标准JavaScript中实现,以允许手动执行FindProxyForURL函数?

我能找到在浏览器中调试 proxy.pac 脚本的唯一方法是添加 alert() 语句并让浏览器在内部执行它。 能够添加断点并手动单步执行 FindProxyForURL 函数将使调试更容易。

有许多用于测试PAC脚本的外部工具,例如pacparser(使用Spidermonkey)和autoprox(使用Microsoft的实现)。

也有人问过类似的问题:

如何发现 de 代理 在 pac
中使用如何获取PAC的访问日志(代理自动配置)
使用 alert() 调试自动代理 (PAC) javascript?
Windows中的Javascript文件在哪里包含用于执行PAC文件的函数?

一些 PAC 函数已由 pactester 实现,并提供pac_utils.js: https://github.com/manugarg/pactester/blob/master/pac_utils.js

但是,它缺少 dnsResolve 和 myIpAddress 函数,如 pactester 自述文件中所述:

PAC 文件使用某些 JavaScript 函数。这些功能已在此工具包含pac_utils.js文件中定义(此文件是使用Mozilla源代码中的另一个文件生成的)。此外,由于JavaScript没有PAC文件中的"dnsResolve"和"myIpAddress"函数所需的DNS解析功能,因此这些函数已在perl中定义,然后导出到JavaScript上下文中。

可以使用 Web 服务实现这些函数,但如果不运行自己的服务器,它们将无法与本地地址一起使用:

dns解析:
我可以使用客户端 Javascript 执行 DNS 查找(主机名到 IP 地址)吗?
执行 DNS 查找以使用 JavaScript 将主机名解析为 IP 地址

我的IP地址:
如何仅使用javascript获取客户端的IP地址?

我不知道是否有可能让任何浏览器授予在托管这些功能的本机实现的 PAC 沙箱环境中手动执行脚本的访问权限。

PAC文件在浏览器沙箱中运行,因此无法访问整个JavaScript编程语言。相反,PAC 文件功能是在具有自定义三盒功能集的浏览器中实现的。