网络安全法 pdf下载:FindProxyForURL浏览器自动脚本配置
来源:百度文库 编辑:中财网 时间:2024/05/08 02:51:25
很多时候你在Internet接入时只使用代理方式而非NAT,那么给使用代理的客户终端设置代理服务器将是一件很烦琐的事情,特别是当代理服务器进行各种改动(比如服务器IP地址,服务端口等等变了)后,你不得不对通知所有的客户重新进行设置。Proxy Auto-Config(PAC)脚本将帮助你解决这些问题。也许你已经注意到Internet Explorer的代理设置里面有一个“使用自动配置脚本”的选项,这里的自动配置脚本指的就是PAC脚本。这是一种以.pac为扩展名的JavaScript脚本,我们可以把它放在内部网络的某个web服务器上,设置客户端IE浏览器把“自动配置脚本选项”指向它(比如http://192.168.100.1/proxy.pac),完成集中设置代理配置的工作。PAC脚本还可以根据用户访问请求的不同设置不同的代理策略,比如,用户访问内部网的某台服务器时,PAC脚本可以告诉浏览器该访问将不通过代理服务器,而用户访问的是内部网以外的地址时,PAC脚本告诉浏览器这个访问请求使用代理。PAC脚本另外一个重要的应用是多台代理服务器并存的情况下,通过pac脚本的控制:用户随机选择使用多台代理服务器中的任意一台来达到流量负载均衡的目的;
管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护;让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务;根据访问目的地的不同,自动选择最佳代理服务器。PAC脚本中必须定义一个名为FindProxyForURL的函数,这个函数会被浏览器自动调用。其格式如下:function FindProxyForURL(url, host){ …… 关于代理设置的“自动配置脚本”不起作用的问题,已有研究结果。
该问题已解决了,解铃还须系铃人。借助firefox调试功能(菜单路径:工具-错误控制台,每次启动firefox后打开这个菜单可以看到调试信息),通过对比工具发现出现故障的脚本文件头多了2个字符,十六进制为”ff fe“。进一步分析发现是使用Ultraeditor编辑时,保存为utf-8格式导致。解决方法如下:
新建一个文件,将原先脚本内容拷贝、粘贴到新文件,保存时注意格式选择为缺省格式。(注意不要使用另存的方式)
用记事本、或者emEditor编辑,也可以避免这个问题。保险起见,保存文件时选择保存类型为“所有文件”。
其他注意事项:
在FireFox中自动配置代理的地址格式类似为:file:///d:/setup/proxy.pac
而在IE中,自动配置脚本的地址格式应该是类似为:file://d:\setup\proxy.pac
第一个单词function需要首字母小写,如果首字母大写则无法识别。 第一种配置 function FindProxyForURL(url,host){
host= host.toLowerCase();
if (
dnsDomainIs(host,'youtube.com')
||dnsDomainIs(host,'ytimg.com')
||dnsDomainIs(host,'twitter.com')
||dnsDomainIs(host,'facebook.com')
||dnsDomainIs(host,'fbcddn.net')
)return "PROXY 127.0.0.1:8118";
else
return "DIRECT";
} 第二种配置function FindProxyForURL(url, host) { // Make the URL Lowercase for easier parsing
var urllower = url.toLowerCase();
url = urllower;
// Make host lowercase
var lhost = host.toLowerCase();
host = lhost;
//Handle localhost
if (
(host == "localhost") ||
(shExpMatch(host, "localhost.*")) ||
(host == "127.0.0.1")
)
{
return "DIRECT";
}
// If any of the below protocols, go direct
if(
(urllower.substring(0,5)=="rtsp:") ||
(urllower.substring(0,6)=="rtspt:") ||
(urllower.substring(0,6)=="rtspu:") ||
(urllower.substring(0,4)=="mms:") ||
(urllower.substring(0,5)=="mmst:") ||
(urllower.substring(0,5)=="mmsu:")
)
{
return "DIRECT";
}
// Go via proxy for my-diploma
if ( dnsDomainIs(host, ".my-diploma.co.uk") )
{
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}
// Go direct for all wortech.ac.uk, and misc other specific hosts
if (
dnsDomainIs(host, ".wortech.ac.uk") ||
dnsDomainIs(host, ".gateway.lsc.gov.uk")
)
{
return "DIRECT";
}
// Go direct for local subnets
if (shExpMatch(host, "/^\d+\.\d+\.\d+\.\d+$/g"))
{
if (
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "172.16.0.0", "255.255.0.0") ||
isInNet(host, "172.17.0.0", "255.255.0.0")
)
{
return "DIRECT";
}
}
if (urllower.substring(0,6)=="https:")
{
return "PROXY wct-fw1.wortech.ac.uk:8443; wct-fw2.wortech.ac.uk:8443";
}
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
} 第三种配置 function FindProxyForURL(url, host) { // Make the URL Lowercase for easier parsing
var urllower = url.toLowerCase();
url = urllower;
// Make host lowercase
var lhost = host.toLowerCase();
host = lhost;
//Handle localhost
if (
(host == "localhost") ||
(shExpMatch(host, "localhost.*")) ||
(host == "127.0.0.1")
)
{
return "DIRECT";
}
// If any of the below protocols, go direct
if(
(urllower.substring(0,5)=="rtsp:") ||
(urllower.substring(0,6)=="rtspt:") ||
(urllower.substring(0,6)=="rtspu:") ||
(urllower.substring(0,4)=="mms:") ||
(urllower.substring(0,5)=="mmst:") ||
(urllower.substring(0,5)=="mmsu:")
)
{
return "DIRECT";
}
// Go via proxy for my-diploma
if ( dnsDomainIs(host, ".my-diploma.co.uk") )
{
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}
// Go direct for all wortech.ac.uk, and misc other specific hosts
if (
dnsDomainIs(host, ".wortech.ac.uk") ||
dnsDomainIs(host, ".gateway.lsc.gov.uk")
)
{
return "DIRECT";
}
// Go direct for local subnets
if (shExpMatch(host, "/^\d+\.\d+\.\d+\.\d+$/g"))
{
if (
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "172.16.0.0", "255.255.0.0") ||
isInNet(host, "172.17.0.0", "255.255.0.0")
)
{
return "DIRECT";
}
}
if (urllower.substring(0,6)=="https:")
{
return "PROXY wct-fw1.wortech.ac.uk:8443; wct-fw2.wortech.ac.uk:8443";
}
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}
管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护;让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务;根据访问目的地的不同,自动选择最佳代理服务器。PAC脚本中必须定义一个名为FindProxyForURL的函数,这个函数会被浏览器自动调用。其格式如下:function FindProxyForURL(url, host){ …… 关于代理设置的“自动配置脚本”不起作用的问题,已有研究结果。
该问题已解决了,解铃还须系铃人。借助firefox调试功能(菜单路径:工具-错误控制台,每次启动firefox后打开这个菜单可以看到调试信息),通过对比工具发现出现故障的脚本文件头多了2个字符,十六进制为”ff fe“。进一步分析发现是使用Ultraeditor编辑时,保存为utf-8格式导致。解决方法如下:
新建一个文件,将原先脚本内容拷贝、粘贴到新文件,保存时注意格式选择为缺省格式。(注意不要使用另存的方式)
用记事本、或者emEditor编辑,也可以避免这个问题。保险起见,保存文件时选择保存类型为“所有文件”。
其他注意事项:
在FireFox中自动配置代理的地址格式类似为:file:///d:/setup/proxy.pac
而在IE中,自动配置脚本的地址格式应该是类似为:file://d:\setup\proxy.pac
第一个单词function需要首字母小写,如果首字母大写则无法识别。 第一种配置 function FindProxyForURL(url,host){
host= host.toLowerCase();
if (
dnsDomainIs(host,'youtube.com')
||dnsDomainIs(host,'ytimg.com')
||dnsDomainIs(host,'twitter.com')
||dnsDomainIs(host,'facebook.com')
||dnsDomainIs(host,'fbcddn.net')
)return "PROXY 127.0.0.1:8118";
else
return "DIRECT";
} 第二种配置function FindProxyForURL(url, host) { // Make the URL Lowercase for easier parsing
var urllower = url.toLowerCase();
url = urllower;
// Make host lowercase
var lhost = host.toLowerCase();
host = lhost;
//Handle localhost
if (
(host == "localhost") ||
(shExpMatch(host, "localhost.*")) ||
(host == "127.0.0.1")
)
{
return "DIRECT";
}
// If any of the below protocols, go direct
if(
(urllower.substring(0,5)=="rtsp:") ||
(urllower.substring(0,6)=="rtspt:") ||
(urllower.substring(0,6)=="rtspu:") ||
(urllower.substring(0,4)=="mms:") ||
(urllower.substring(0,5)=="mmst:") ||
(urllower.substring(0,5)=="mmsu:")
)
{
return "DIRECT";
}
// Go via proxy for my-diploma
if ( dnsDomainIs(host, ".my-diploma.co.uk") )
{
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}
// Go direct for all wortech.ac.uk, and misc other specific hosts
if (
dnsDomainIs(host, ".wortech.ac.uk") ||
dnsDomainIs(host, ".gateway.lsc.gov.uk")
)
{
return "DIRECT";
}
// Go direct for local subnets
if (shExpMatch(host, "/^\d+\.\d+\.\d+\.\d+$/g"))
{
if (
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "172.16.0.0", "255.255.0.0") ||
isInNet(host, "172.17.0.0", "255.255.0.0")
)
{
return "DIRECT";
}
}
if (urllower.substring(0,6)=="https:")
{
return "PROXY wct-fw1.wortech.ac.uk:8443; wct-fw2.wortech.ac.uk:8443";
}
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
} 第三种配置 function FindProxyForURL(url, host) { // Make the URL Lowercase for easier parsing
var urllower = url.toLowerCase();
url = urllower;
// Make host lowercase
var lhost = host.toLowerCase();
host = lhost;
//Handle localhost
if (
(host == "localhost") ||
(shExpMatch(host, "localhost.*")) ||
(host == "127.0.0.1")
)
{
return "DIRECT";
}
// If any of the below protocols, go direct
if(
(urllower.substring(0,5)=="rtsp:") ||
(urllower.substring(0,6)=="rtspt:") ||
(urllower.substring(0,6)=="rtspu:") ||
(urllower.substring(0,4)=="mms:") ||
(urllower.substring(0,5)=="mmst:") ||
(urllower.substring(0,5)=="mmsu:")
)
{
return "DIRECT";
}
// Go via proxy for my-diploma
if ( dnsDomainIs(host, ".my-diploma.co.uk") )
{
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}
// Go direct for all wortech.ac.uk, and misc other specific hosts
if (
dnsDomainIs(host, ".wortech.ac.uk") ||
dnsDomainIs(host, ".gateway.lsc.gov.uk")
)
{
return "DIRECT";
}
// Go direct for local subnets
if (shExpMatch(host, "/^\d+\.\d+\.\d+\.\d+$/g"))
{
if (
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "172.16.0.0", "255.255.0.0") ||
isInNet(host, "172.17.0.0", "255.255.0.0")
)
{
return "DIRECT";
}
}
if (urllower.substring(0,6)=="https:")
{
return "PROXY wct-fw1.wortech.ac.uk:8443; wct-fw2.wortech.ac.uk:8443";
}
return "PROXY wct-fw1.wortech.ac.uk:8080; wct-fw2.wortech.ac.uk:8080";
}