0

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

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

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

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

测试 PAC 脚本的外部工具有很多,比如pacparser(使用 Spidermonkey)和autoprox(使用微软的实现

有人问过类似的问题:

如何发现 pac 中使用的 de proxy
如何获取 PAC 的访问日志(proxy auto config)
使用 alert() 调试 autoproxy (PAC) javascript?
在 Windows 中,包含执行 PAC 文件的函数的 Javascript 文件在哪里?

4

1 回答 1

2

一些 PAC 功能已由 pactester 实现并在 pac_utils.js 中可用:https ://github.com/manugarg/pactester/blob/master/pac_utils.js

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

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

使用 Web 服务可以实现这些功能,但如果不运行您自己的服务器,它们将无法使用本地地址:

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

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

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

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

于 2016-01-29T07:43:29.953 回答