立即登录

pac自动代理

11/28 01:16:54

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】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新资讯