Warning: count(): Parameter must be an array or an object that implements Countable in /www/wwwroot/mdaeo.org/usr/plugins/AMP/Action.php on line 388
自动代理脚本-proxy.pac

Mdaeo'Blog

自动代理脚本-proxy.pac

针对不同网页使用不同代理 —— 自动配置脚本

1.前言 2.自动配置脚本简介 3.自动配置脚本语法 4.相关例子

 

1.前言 有些朋友会问为什么tw没有自动代理的功能,其实IE本身就有这个功能,只要有一点点JS知识,你可以自己手动编写一个最适合自己的IE代理脚本。

2.自动配置脚本简介

自动配置脚本起的作用就是,当IE访问网页的时候会根据脚本文件里面界定的内容来访问。比方说,你在脚本文件里面限定了访问某些IP使用某个代理的时候,访问另外一些IP使用另外的代理,这就很方便通过脚本文件来完成。

3.自动配置脚本语法 一个PAC文件其实就是一个文本文件,最简单的格式就是包含一个叫FindProxyForURL的JScript函数,IE通过传入两个变量来调用这个函数,一个是用户浏览的地址URL全路经,一个是这个URL中的主机名部分(host)。

这个FindProxyForURL函数有三种可能的字符串返回值,一是"DIRECT",就是直接连接,不通过代理;二是"ROXY proxyaddr:port",其中proxyaddr和port分别是代理的地址和代理的端口;三是"SOCKS socksaddr:port",其中socksaddr和port分别是socks代理的地址和端口,一个自动代理文件可以是多个选择的组合,其中用分号(;)隔开,如:

function FindProxyForURL(url,host) { if (host == "www.mydomain.com") return "DIRECT"; return "ROXY myproxy:80; PROXY myotherproxy:8080; DIRECT"; } 把以上代码另存为proxy.pac的文件,如:e:\proxy.pac,然后在IE的菜单里"工具"->"INTEL选项"->"连接"->局域网设置

把使用自动配置脚本选上,然后在地址栏填入file://e:/proxy.pac,注意file后是两斜杠,要使设置生效,需要关闭IE再重新打开.

现在我们介绍下这个proxy.pac脚本文件,脚本的语法是js语法,js的内置函数可以使用,要实现自动配置代理,需要实现FindProxyForURL这个函数,其参数url代表要访问的连接,host代表要访问连接的主机名,该函数有三个返回参数 direct:直接连接 proxy IPORT socket IPORT 返回结果大小写不敏感

PAC的其他内置语法见http://wp.netscape.com/eng/mozil ... emo/proxy-live.html

PAC脚本另外一个重要的应用是多台代理服务器并存的情况下,通过pac脚本的控制:

用户随机选择使用多台代理服务器中的任意一台来达到流量负载均衡的目的; 管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护; 让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务; 根据访问目的地的不同,自动选择最佳代理服务器。

4.相关例子 下面列举几个PAC的实例

a、isPlainHostName(host),本例演示判断是否为本地主机,如http://myservername/

 

b、dnsDomainIs(host, "")、localHostOrDomainIs(host, ""),本例演示判断访问主机

 

c、isResolvable(host),本例演示主机名能否被dns服务器解析,如果能直接访问,否

 

d、isInNet(host, "", ""),本例演示访问IP是否在某个子网内,如果是就直接访问,

 

{

 

} e、shExpMatch(host, ""),本例演示根据主机域名来改变连接类型,本地主机、*.edu、

 

f、url.substring(),本例演示根据不同的协议来选择不同的代理,http、https、ftp、

 

g、dnsResolve(host),本例演示判断访问主机是否某个IP,如果是就使用代理,否则直

 

function FindProxyForURL(url, host) {

 

}

h、myIpAddress(),本例演示判断本地IP是否某个IP,如果是就使用代理,否则直接使

 

i、dnsDomainLevels(host),本例演示访问主机的域名级数是几级,就是域名有几个点

 

j、weekdayRange(),本例演示当前日期的范围来改变使用代理,如果是GMT时间周三

 

k、最后一个例子是演示随机使用代理,这样可以好好利用代理服务器。

function FindProxyForURL(url,host) {

 

}

function randomProxy() {

 

}

 

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »

因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合AMP标准。