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

时间:2016-01-29 06:09:13

标签: javascript pac autoproxy

是否可以通过从浏览器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?

1 个答案:

答案 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文件功能是在具有自定义沙盒功能集的浏览器中实现的。