// =======================================================================
// Proxy.pac
// =======================================================================
function FindProxyForURL(url, host)
{
// 是否在同一域
if (isPlainHostName(host))
return "DIRECT";
// 是否在同一子网
if (isInNet(host, "166.111.0.0", "255.255.0.0"))
return "DIRECT";
// *.mycompany.com:直接连接
// 除了:www.mycompany.com 和 home.mycompany.com
if (dnsDomainIs(host, ".mycompany.com")) &&
!localHostOrDomainIs(host, "www.mycompany.com") &&
!localHostOrDoaminIs(host, "home.mycompany.com"))
return "DIRECT";
// DNS 服务器能够解析主机:直接连接
if (isResolvable(host))
return "DIRECT";
// URL 匹配:直接连接
if (shExpMatch(url, "*vpn.domain.com*") ||
shExpMatch(url, "*abcdomain.com/folder/*"))
return "DIRECT";
// 协议匹配:直接连接
if (url.substring(0, 6) == "https:")
return "DIRECT";
// 解析主机名后的 IP 地址:直接连接
var resolved_ip = dnsResolve(host);
if (isInNet(resolved_ip, "10.0.0.0", "255.0.0.0") ||
isInNet(resolved_ip, "172.16.0.0", "255.240.0.0") ||
isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
return "DIRECT";
if (dnsResolve(host) == "202.35.23.52")
return "DIRECT";
// 主机 IP 地址:直接连接
if (myIpAddress() == "10.64.25.9")
return "DIRECT";
// 主机名中没有点:直接连接
if (dnsDomainLevels(host) == 0)
return "DIRECT";
// 周末:直接连接
if(weekdayRange("SAT", "SUN", "GMT"))
return "DIRECT";
// 一二月:直接连接
if (dateRange("JAN", "MAR"))
return "DIRECT";
// 晚间:直接连接
if (timeRange(18, 24))
return "DIRECT";
else
return "PROXY 1.2.3.4:8080; PROXY 4.5.6.7:8080; DIRECT";
}
可以使用 pacparser 共享软件测试 PAC 文件的准确性。
参考链接