lhq7856 发表于 2009-3-28 13:26 只看TA 1楼 |
---|
|
教你如何让浏览器根据当前地址自动切换代理 多谢大家给个红心~因为本人浏览经常要在教育网和公网之间切换,且偶尔需要翻墙,所以时常需要切换代理服务器。 Maxthon的代理设置是相当的强大,不仅可以增加条件判断,而且还可以记录代理服务器的用户名密码。TW在这方面就逊色多了,不过我们可以通过IE的自动代理脚本来使TW根据当前浏览地址自动切换代理服务器.(如果将来TW能支持代理脚本最好了,换机器不用重新设置) 方法:IE的菜单里"工具"->"INTEL选项"->"连接"->局域网设置,把使用自动配置脚本选上,然后在地址栏填入file://c:/proxy.pac,并把TW代理设置为“使用IE设置”,重启浏览器即可 pac脚本写起来比较简单,可依据以下转帖介绍: proxy.pac脚本文件的语法是js语法,js的内置函数可以使用,要实现自动配置代理,需要实现FindProxyForURL这个函数,其参数url代表要访问的连接,host代表要访问连接的主机名,该函数有三个返回参数 direct:直接连接 proxy IP:PORT socket IP:PORT 返回结果大小写不敏感 PAC的其他内置语法见http://wp.netscape.com/eng/mozil ... emo/proxy-live.html 下面列举几个PAC的实例,顺便学习下它的语法 a、isPlainHostName(host),本例演示判断是否为本地主机,如http://myservername/ 的方式访问,如果是直接连接,否则使用代理 function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else return "PROXY proxy:80"; } b、dnsDomainIs(host, "")、localHostOrDomainIs(host, ""),本例演示判断访问主机 是否属于某个域和某个域名,如果属于.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"; else return "PROXY proxy:80"; } c、isResolvable(host),本例演示主机名能否被dns服务器解析,如果能直接访问,否 则就通过代理访问。 function FindProxyForURL(url, host) { if (isResolvable(host)) return "DIRECT"; else return "PROXY proxy:80"; } d、isInNet(host, "", ""),本例演示访问IP是否在某个子网内,如果是就直接访问, 否则就通过代理,例子演示访问清华IP段的主页不用代理。 function FindProxyForURL(url, host) { if (isInNet(host, "166.111.0.0", "255.255.0.0")) return "DIRECT"; else return "PROXY proxy:80"; } e、shExpMatch(host, ""),本例演示根据主机域名来改变连接类型,本地主机、*.edu、 *.com分别用不同的连接方式。 function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else if (shExpMatch(host, "*.com")) return "PROXY comproxy:80"; else if (shExpMatch(host, "*.edu")) return "PROXY eduproxy:80"; else return "PROXY proxy:80"; } f、url.substring(),本例演示根据不同的协议来选择不同的代理,http、https、ftp、 gopher分别使用不同的代理。 function FindProxyForURL(url, host) { if (url.substring(0, 5) == "http:") { return "PROXY proxy:80"; } else if (url.substring(0, 4) == "ftp:") { return "PROXY fproxy:80"; } else if (url.substring(0, 7) == "gopher:") { return "PROXY gproxy"; } else if (url.substring(0, 6) == "https:") { return "PROXY secproxy:8080"; } else { return "DIRECT"; } } g、dnsResolve(host),本例演示判断访问主机是否某个IP,如果是就使用代理,否则直 接连接。 function FindProxyForURL(url, host) { if (dnsResolve(host) == "166.111.8.237") { return "PROXY secproxy:8080"; } else { return "PROXY proxy:80"; } } h、myIpAddress(),本例演示判断本地IP是否某个IP,如果是就使用代理,否则直接使 用连接。 function FindProxyForURL(url, host) { if (myIpAddress() == "166.111.8.238") { return "PROXY proxy:80"; } else { return "DIRECT"; } } i、dnsDomainLevels(host),本例演示访问主机的域名级数是几级,就是域名有几个点 如果域名中有点,就通过代理访问,否则直接连接。 function FindProxyForURL(url, host) { if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0 return "PROXY proxy:80"; } return "DIRECT"; } j、weekdayRange(),本例演示当前日期的范围来改变使用代理,如果是GMT时间周三 到周六,使用代理连接,否则直接连接。 function FindProxyForURL(url, host) { if(weekdayRange("WED", "SAT", "GMT")) return "PROXY proxy:80"; else return "DIRECT"; } k、最后一个例子是演示随机使用代理,这样可以好好利用代理服务器。 function FindProxyForURL(url,host) { return randomProxy(); } function randomProxy() { switch( Math.floor( Math.random() * 5 ) ) { case 0: return "PROXY proxy1:80"; break; case 1: return "PROXY proxy2:80"; break; case 2: return "PROXY proxy3:80"; break; case 3: return "PROXY proxy4:80"; break; case 4: return "PROXY proxy5:80"; break; } } |
0 |