如何在 Node 中 运行 PAC 代理脚本?
How to run a PAC proxy script in Node?
我正在尝试编写一个可以解析和 运行 公司代理脚本 PAC 和 return 适当的代理服务器以编程方式使用的节点程序(欢迎提出其他语言的建议)。
是否有任何现有的解决方案可以做到这一点? (或者这只能通过浏览器实现)
似乎 PAC 文件假定某些全局函数存在于执行上下文中,例如
shExpMatch()
myIpAddress() // interestingly the nodejs ip package return the true LAN DHCP assigned IP instead of a VPN IP
目标是每次启动 shell 时解析正确的代理服务器(如果不在代理后面,则根本不设置)
非常感谢任何提示。
如果您坚持使用 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:
- dnsDomainIs
- shExpMatch
- isInNet
- 我的 IP 地址
- dnsResolve
- isPlainHostName
- localHostOrDomainIs
- 可解析
- dnsDomainLevels
- 工作日范围
- 日期范围
- 时间范围
- 警报
我正在尝试编写一个可以解析和 运行 公司代理脚本 PAC 和 return 适当的代理服务器以编程方式使用的节点程序(欢迎提出其他语言的建议)。
是否有任何现有的解决方案可以做到这一点? (或者这只能通过浏览器实现)
似乎 PAC 文件假定某些全局函数存在于执行上下文中,例如
shExpMatch()
myIpAddress() // interestingly the nodejs ip package return the true LAN DHCP assigned IP instead of a VPN IP
目标是每次启动 shell 时解析正确的代理服务器(如果不在代理后面,则根本不设置)
非常感谢任何提示。
如果您坚持使用 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:
- dnsDomainIs
- shExpMatch
- isInNet
- 我的 IP 地址
- dnsResolve
- isPlainHostName
- localHostOrDomainIs
- 可解析
- dnsDomainLevels
- 工作日范围
- 日期范围
- 时间范围
- 警报