代理 PAC 文件语法简介

英文参考阅读: http://findproxyforurl.com/example-pac-file/

基本语法

各种代理中的Pac规则文件其实都是一个包含有 FindProxyForURL(url, host) 方法的 JS 文件

function FindProxyForURL(url, host) {
    // 这里面写各种规则
    // 返回的是字符串:
    // - "DIRECT" 直接连接
    // - "PROXY: 127.0.0.1:1080"  代理连接
}


// *********
//   看个例子 
// *********
// 可以先把返回的结果弄成变量,省劲
var direct  = "DIRECT";
var socks   = "SOCKS5 127.0.0.1080";

function FindProxyForURL(url, host) {

// 如果域名匹配,直接连接
    if (dnsDomainIs(host, "intranet.domain.com") ||
        shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
        return "DIRECT";

// 如果 URL 或者 协议匹配,直接连接
    if (url.substring(0, 4)=="ftp:" ||
        shExpMatch(url, "http://abcdomain.com/folder/*"))
        return "DIRECT";

// 如果访问的链接是内网,直接连接
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.local") ||
        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";

// 如果访问的IP属于一个子网,则通过代理访问
    if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
        return "PROXY 1.2.3.4:8080";

// 默认返回值,按照顺序选择可执行的,第一无法连接就换第二个
    return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}

PAC 可执行一些方法有

详情参阅此处 http://findproxyforurl.com/pac-functions/

  • dnsDomainIs
  • shExpMatch
  • isInNet
  • myIpAddress
  • dnsResolve
  • isPlainHostName
  • localHostOrDomainIs
  • isResolvable
  • dnsDomainLevels
  • weekdayRange
  • dateRange
  • timeRange
  • alert

好了,可以做个自己的 PAC 文件了,放到浏览器的代理插件上,根据自己的需要,上网更科学。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月ooOO

许个愿,我帮你实现

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值