是否可以通过从浏览器JavaScript控制台手动执行FindProxyForURL(url,host)函数来测试Proxy auto-config (PAC) script?
可以从控制台访问PAC functions的内部实现(例如dnsDomainIs,shExpMatch,isInNet)吗?
或者可以在标准JavaScript中实现这些函数以允许手动执行FindProxyForURL函数吗?
我可以在浏览器中找到debug the proxy.pac script的唯一方法是添加alert()语句并让浏览器在内部执行它。能够添加断点并手动逐步执行FindProxyForURL函数将使调试变得更容易。
有许多用于测试PAC脚本的外部工具,例如pacparser(使用Spidermonkey)和autoprox(使用Microsofts implementation)
有人问过类似的问题:
How to discover de proxy used in a pac
How to get access log of PAC(proxy auto config)
Debugging autoproxy (PAC) javascript with alert()?
Where in Windows is the Javascript file which contains functions for executing PAC files?
答案 0 :(得分:2)
某些PAC函数已由pactester实现,并在pac_utils.js中可用:https://github.com/manugarg/pactester/blob/master/pac_utils.js
但是它缺少pactester readme中所述的函数dnsResolve和myIpAddress:
PAC文件使用某些JavaScript函数。这些函数已在此工具附带的pac_utils.js文件中定义(此文件是使用Mozilla源代码中的另一个文件生成的)。此外,由于JavaScript没有DNS解析能力,因此" dnsResolve"和" myIpAddress" PAC文件中的函数,这些函数已在perl中定义,然后导出到JavaScript上下文。
使用Web服务可以实现这些功能,但是如果不运行自己的服务器,他们就无法使用本地地址:
dnsResolve:
Can I perform a DNS lookup (hostname to IP address) using client-side Javascript?
Perform a DNS lookup to resolve a hostname to an IP address using JavaScript
myIpAddress:
How to get client's IP address using javascript only?
我不知道是否可以让任何浏览器授予访问权限来PAC sandbox environment内手动执行这些功能的本机实现的脚本。
PAC文件在浏览器沙箱中运行,因此无法访问整个JavaScript编程语言。相反,PAC文件功能是在具有自定义沙盒功能集的浏览器中实现的。