我正在尝试编写一个节点程序(欢迎使用其他语言的建议),它可以解析并运行公司代理脚本PAC并返回相应的代理服务器以便以编程方式使用。
是否有任何现有的解决方案可以做到这一点? (或者这只能通过浏览器实现)
似乎PAC文件假定执行上下文中存在某些全局函数,例如
shExpMatch()
myIpAddress() // interestingly the nodejs ip package return the true LAN DHCP assigned IP instead of a VPN IP
目标是每次启动shell时解析正确的代理服务器(或者如果不在代理后面则不设置它)
任何提示都非常感激。
答案 0 :(得分:2)
如果您坚持使用Node,我建议您使用类似pac-resolver的内容。
const pac = require('pac-resolver');
const fetch = require('node-fetch');
const ip = require('ip');
fetch('http://<proxy_host>:<proxy_port>')
.then(res => res.text())
.then(body => {
// to handle a bug when pinging 8.8.8.8 will time out
// see: https://github.com/TooTallNate/node-pac-resolver/issues/18
findProxy = pac(body, { sandbox: { myIpAddress: ip.address }, });
return findProxy('http://google.com/'));
})
.then(proxy => console.log(proxy))
.catch(err => console.error(err));
在任何情况下,您都可以查看the repo以了解需要定义哪些全局函数以及如何在JavaScript中完成。
如果您可以使用其他语言,请查看pacparser。
顺便说一下,标准全局函数列表是here: