打印

教你如何让浏览器根据当前地址自动切换代理

0

教你如何让浏览器根据当前地址自动切换代理

多谢大家给个红心~

因为本人浏览经常要在教育网和公网之间切换,且偶尔需要翻墙,所以时常需要切换代理服务器。

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;

}

}

TOP

0
呵呵,谢谢楼主了,可是对我这样的菜鸟还是太难了,看不懂哎。

TOP

0
楼上耐心一些,是可以看懂的。最重要的是对着操作。

TOP

0
还是太麻烦啊,不如直接用在线代理,毕竟我们只是娱乐而已

TOP

0
看着头大郁闷死,不够楼主也辛苦了,我觉得有点多余了·呵呵。我的手机PC用代理。网卡不用代理。只要在手机pc的“猫”的设置里吧代理设置好。不用切换两不相干。

TOP

0
LZ的东西太专业了~看来LZ一定是个翻墙高手~经常翻来翻去才总结得出这些~恩~辛苦了~支持你

TOP

0
多谢楼主分享,辛苦了!太专业了看不懂。今后要加强学习!

TOP

0
看了半天还是不太明白,是我笨呢?还是楼主说的模糊?真不知道!

TOP

0
看不懂,楼主要能发些图进行图文并茂讲解我等菜鸟才能懂呀。

TOP

当前时区 GMT+8, 现在时间是 2024-5-11 13:34