资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
IE 局域网设置代理的自动配置脚本介绍如果上班是使用代理上网,再家不使用,天天调太麻烦,可通过代理自动配置脚本 Proxy Auto-Config File 来控制用户通访问 internet。只要使用该文档编写脚本来实现,该脚本可以根据条件使用指定的代理。控制的范围有:使用代理或不使用代理;使用哪个代理;使用哪种类型的代理,类型包括:HTTP、HTTPS、FTP、SOCK;控制的方式有:根据客户端【本地】的 IP 地址来控制;根据访问的服务端【访问的主机服务器】IP 地址来控制;根据访问的日期和时间来控制;本文内容包括:常用脚本如何在 IE 中设置?脚本语法介绍1 常用脚本1.1 根据客户端网段选择代理function FindProxyForURL(url, host)/*如何客户端 IP 地址段在 192.168.0.0 到 192.168.0.255,使用 HTTP 代理 192.168.0.1:80*/*如何客户端 IP 地址段在 192.168.1.0 到 192.168.1.255,使用 HTTP 代理 192.168.0.1:80*/*其它的直接访问 */if ( shExpMatch(url, http:/* ) &isInNet(myIpAddress(),192.168.0.0,255.255.255.0)return PROXY 192.168.0.1:80;else if ( shExpMatch(url, http:/* ) &isInNet(myIpAddress(),192.168.1.0,255.255.255.0)return PROXY 192.168.1.1:80;elsereturn DIRECT;1.2 根据访问的服务器选择代理function FindProxyForURL(url, host)/* 如果访问的服务器网段为 10.0.0.0 至 10.255.255.255或者 访问本地 127.0.0.1 , 直接访问*/* 其它的按顺序使用两个代理 */if ( isInNet(host, 10.0.0.0, 255.0.0.0) |isInNet(host, 127.0.0.1, 255.255.255.255) )return DIRECT;else return PROXY 192.168.0.1:80; PROXY 92.168.1.1:80;1.3 根据时间选择代理function FindProxyForURL(url, host)/* 如果是上班时间【周一到周五的 9 点到 17 点】使用代理,其它情况直接访问*/if ( weekdayRange(MON, FRI) &timerange(9, 17) )return PROXY 192.168.0.1:80; PROXY 92.168.1.1:80;else return DIRECT;2 如何在 IE 中设置?如果您的 PAC 文件已经没有错误,您可以在 IE 中设置来使用该 PAC 文件。具体做法如下:1. 打开 IE,在“工具”菜单中选择“Internet 选项” 。2. 点击“连接” , “局域网设置” 。3. 选择“使用自动配置脚本” ,并输入脚本的位置,比如:file:/D:setDatpac 设置代理脚本pac-time.js3 脚本语法介绍3.1 主函数如何编写 PAC 文件呢,首先必须定义一个主函数 FindProxyForURL,格式如下:function FindProxyForURL(url, host).浏览器在访问每个 url 的时候都会调用该函数:ret = FindProxyForURL(url, host);函数中的参数:url 是浏览器访问的完整 url 地址,例如http:/openattitude.irixs.org/http:/www.google.com/http:/192.168.1.1:8000/host 是从完整 url 中截取的子字串,内容是从:/开始到下面第一个/或者:中间的部分,以上面 url 为例分别为openattitude.irixs.orgwww.google.com192.168.1.1我们来仔细看一下第三个例子,host 字段中不包含端口 8000。如果有需要,端口号可以从 url 字段中提取。ret 是字符串变量,根据 FindProxyForURL()返回值返回单个字符串。如果返回NULL,即返回空字符串,则浏览器不会使用任何代理,这样浏览器将无法打开网页。返回值可以是下列三种结构块的任意组合,每个不同的块之间用分号分割。DIRECT - 不调用代理,直接连接PROXY host:port - 调用指定代理(host:port)SOCKS host:port - 调用指定 SOCKS 代理(host:port)如果是选用由分号分割的多块设置,按照从左向右,最左边的代理会被最优先调用,除非浏览器无法成功和 proxy 建立连接,那么下一个配置就会被调用。如果浏览器遇到不可用的代理服务器,浏览器将在 30 分钟后自动重试先前无响应的代理服务器,一个小时后会再次进行尝试,依此类推,每次间隔时间为 30 分钟。这意味着,如果暂时关闭代理服务器,客户机至多在其重新启动后 30 分钟便会重新开始使用该代理服务器。如果所有代理服务器均停用且未指定 DIRECT 返回值,浏览器将询问用户是否暂时忽略代理服务器而尝试直接进行连接。Navigator 将询问是否应在 20 分钟后重试代理服务器,接着过 20 分钟会再次询问,依此类推,每次间隔时间为 20 分钟。举例PROXY proxy.example.com:8080; PROXY proxy.example.com:8081; DIRECT3.2 条件函数下面是可用于 FindProxyForURL()函数体中的条件函数:基于主机名的函数:isPlainHostName()dnsDomainIs()localHostOrDomainIs()isResolvable()isInNet()时间条件函数:weekdayRange()dateRange()timeRange()实用条件函数:dnsResolve()myIpAddress()dnsDomainLevels()shExpMatch()4 基于主机名的函数4.1 isPlainHostName(host)判断访问的是否为本地主机host 是不包含端口号的,url 中的主机名(下同) 。如果主机名中不包含域名则返回true。如:isPlainHostName(www) 返回 true.isPlainHostName(www.google.com) 返回 false.举例:http:/myservername/ 的方式访问,如果是本地主机直接连接,否则使用代理function FindProxyForURL(url, host)if (isPlainHostName(host) return DIRECT;elsereturn PROXY proxy:80;4.2 dnsDomainIs(hostname, domain)domain 用于和 hostname 进行比较的域名。如果 hostname 的域名和 domain 的值相匹配则返回 true。如:dnsDomainIs(www.google.com, .google.com) 返回 true.dnsDomainIs(www, .google.com) 返回 false.dnsDomainIs(www.apple.com, .google.com) 返回 false.举例:见下一函数4.3 localHostOrDomainIs(hostname, hostdom)hostdom 是要进行匹配的指定的主机名。如果 hostname 和指定的 hostdom 相匹配,或者在 hostname 中没有指定要进行匹配的域名部分,函数返回 true。如:localHostOrDomainIs(www. google.com, www. google.com) 返回 true (exact match).localHostOrDomainIs(www, www. google.com) 返回 true (hostname match, domain not specified).localHostOrDomainIs(www.apple.com, www. google.com) 返回 false (domain name mismatch).localHostOrDomainIs(adc.apple.com, www. google.com) 返回 false (hostname mismatch).举例:如果属于.company.com 域的主机名,而域名不是 www.company.com 和home.company.com 的直接连接,否则使用代理访问。function FindProxyForURL(url, host)if (isPlainHostName(host) | dnsDomainIs(host, .company.com) &!localHostOrDomainIs(host, www.company.com) &!localHostOrDomainIs(host, home.company.com)return DIRECT;elsereturn PROXY proxy:80;4.4 isResolvable(host)如果成功解析主机名则返回 true。如:isResolvable(www.google.com) 返回 true (除非由于防火墙或某些其他原因导致DNS 无法解析).isResolvable(bogus.domain.foobar) 返回 false.举例:主机名能否被 dns 服务器解析,如果能直接访问,否则就通过代理访问。function FindProxyForURL(url, host)if (isResolvable(host)return DIRECT;elsereturn PROXY proxy:80;4.5 isInNet(host, pattern, mask)host 在这里可以是 DNS 主机名,比如 www.google.com,也可以是 IP 地址。如果传递的是主机名,此函数会将其解析成 IP 地址。pattern 是点分隔格式的 IP 地址模式。mask 是 IP 地址模式掩码,用于确定应对 IP 地址的哪些部分进行匹配。值为 0 表示忽略;255 表示匹配。如果主机的 IP 地址与指定的 IP 地址模式匹配,则返回 true。如:isInNet(host, 198.95.249.79, 255.255.255.255) 如果 host 的 IP 地址为198.95.249.79 则返回 true.isInNet(host, 198.95.0.0, 255.255.0.0) 如果 host 的 IP 地址为 198.95.*.*则返回 true.举例:主机 IP 是否在某个子网内,如果是就直接访问,否则就通过代理,例子演示访问清华IP 段的主页不用代理。function FindProxyForURL(url, host)if (isInNet(host, 166.111.0.0, 255.255.0.0)return
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号