代理自动配置(PAC)如何编写
嘻嘻发布于2020-04-26
最后更新于2020年3月9日
浏览代理自动配置(PAC)文件是一组用JavaScript编码的脚本,用于确定web浏览器请求是直接发送到它们想要的目的地,还是被转发到web代理服务器。
换句话说,PAC文件定义了web浏览器/设备如何自动选择适当的访问方法(代理或直接)来获取给定的URL。
PAC文件的最大优点是,它们通常相对容易创建和维护,它们只允许您代理您想要代理的站点,将隐私考虑在内,并将快速处理最小化。
PAC的好处
- 灵活和可扩展
- 支持所有流行的浏览器
- 易于管理和维护在任何规模的网络
- 能够支持使用标准浏览器的移动设备
PAC文件包含基本结构:
function FindProxyForURL(url, host) {
// This is a template PAC file for schools built by Lightspeed Systems
// Your proxy server name and port
var proxy_yes = "PROXY YOUR_PROXY_FQHN:PORT";
var proxy_no = "DIRECT";
// If the hostname matches, send to proxy.
if (shExpMatch(url, "*.google.com/*"))
return proxy_yes;
// DEFAULT RULE: All other traffic, send direct
return proxy_no;
}
Function
function FindProxyForURL(url, host){
}
当web浏览器发出请求时,请求首先通过PAC文件查看被请求的URL是否与函数中设置的任何规则相匹配。
参数
URL——web浏览器请求的URL。
Host——从URL中提取的主机名。
结果
当函数被执行时,它根据在函数本身中设置的规则来决定请求应该发生什么。
结果通常如下:
DIRECT – 没有任何代理
PROXY – 应该代理连接。
完整例子:
var domains = {
"google.com": 1,
"*.google.com": 1,
"facebook.com": 1,
"*.facebook.com":1
};
var proxy = "SOCKS5 192.168.0.75:8090; PROXY 192.168.0.75:8060;";
var direct = 'DIRECT;';
function FindProxyForURL(url, host) {
var lastPos;
do {
if (domains.hasOwnProperty(host)) {
return proxy;
}
lastPos = host.indexOf('.') + 1;
host = host.slice(lastPos);
} while (lastPos >= 1);
return direct;
}