pac自动代理
文章目录
1.pac 定义
PAC,一个自动代理配置脚本,包含了很多使用 JavaScript 编写的规则pac自动代理脚本地址,它能够决定网络流量走默认通道还是代理服务器通道,控制的流量类型包括:HTTP、HTTPS 和 FTP。
本质是一段js
function FindProxyForURL(url, host) {
return "DIRECT";
}
2. 参考配置地址
地址:
3. 实际配置案例 3.1 编写pac文件
下面这段表示的是如果是本机ip192.168.8.0网段的,就走192.168.2.207:443代理,如果不是的话,就直连
function FindProxyForURL(url, host) {
if (isInNet(myIpAddress(), "192.168.8.0", "255.255.255.0")) {
return "PROXY 192.168.2.207:443";
}
return "DIRECT";
}
3.1.1 return 语句有三种指令: 3.1.2 内置函数 3.1.2.1 dnsDomainIs
类似于 ==,但是对大小写不敏感,
if (dnsDomainIs(host, "google.com") ||
dnsDomainIs(host, "www.google.com")) {
return "DIRECT";
}
3.1.2.2 shExpMatch
Shell 正则匹配pac自动代理脚本地址,* 匹配用的比较多,可以是*.,也是可以下面这样,
if (shExpMatch(host, "vpn.domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*")) {
return "DIRECT";
}
3.1.2.3 isInNet
判断是否在网段内容,比如 10.1.0.0 这个网段,10.1.1.0 就在网段中,
if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0")) {
return "DIRECT";
}
3.1.2.4 主机ip
if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0")) {
return "PROXY 10.10.5.1:8080";
}
3.1.2.5 dnsResolve
通过 DNS 查询主机 ip,
if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) {
return "DIRECT";
}
3.1.2.6 isPlainHostName
判断是否为诸如, 这样的主机名,
if (isPlainHostName(host)) {
return "DIRECT";
}
3.1.2.7 isResolvable
判断主机是否可访问
if (isResolvable(host)) {
return "PROXY proxy1.example.com:8080";
}
3.1.2.8 dnsDomainLevels
返回是几级域名,比如dnsDomainLevels() 返回的结果就是 1辅助论坛,
if (dnsDomainLevels(host) > 0) {
return "PROXY proxy1.example.com:8080";
} else {
return "DIRECT";
}
3.2 配置nginx,将pac文件上传到服务器
本案例放置pac文件的路径
nginx 配置
location /proxy.pac {
alias /usr/local/openresty/nginx/pac/proxy.pac; //绝对路径
}
3.3 配置自动代理
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!