您现在的位置:首页 > 教案怎么写 > 正文

详解代理自动配置 PAC

2019-08-24 11:02 网络整理 教案网

pac自动代理_代理自动配置pac网址_pac自动代理脚本地址

有很多人都是通过局域网上internet,诸如浏览器、下载工具、ftp工具、oicq等都需要分别设置代理服务器,而且它们有的需要使用http代理,有的需要用socks代理,一一区别很是麻烦,最无奈的是常用的email工具本身根本无法使用代理。uc会发出联网信号到almp代理,almp代理会将uc的ip连接地址强制更改为proxy.php文件中的免流ip地址(这就是lbe显示android系统在联网,而不是uc在联网的原因)从而实现免流。主要用于局域网内共享modem代理上网,adsl代理共享、宽带代理共享、专线代理共享、isdn代理共享、卫星代理共享、蓝牙代理共享和二级代理等共享代理上网。

什么是 PAC

PAC,一个自动代理配置脚本,包含了很多使用 JavaScript 编写的规则,它能够决定网络流量走默认通道还是代理服务器通道,控制的流量类型包括:HTTP、HTTPS 和 FTP。

它是一段 JavaScript 脚本:

functionFindProxyForURL(url, host){

return"DIRECT";

}

上面就是一个最简洁的 PAC 文件,意思是所有流量都直接进入互联网,不走代理。

PAC 语法和函数

上面函数中, 字段就是我们在浏览器地址栏输入的待访问地址, 为该地址对应的 hostname, 语句有三种指令:

,表示无代理直接连接

,表示走 的 proxy 服务

代理自动配置pac网址_pac自动代理_pac自动代理脚本地址

,表示走 的 socks 服务

而返回的接口可以是多个代理串联:

return"PROXY 222.20.74.89:8800; SOCKS 222.20.74.89:8899; DIRECT";

上面代理的意思是pac自动代理脚本地址,默认走 的 proxy 服务;如果代理挂了或者超时,则走 的 socks 代理;如果 socks 也挂了,则无代理直接连接。从这里可以看出 PAC 的一大优势:自动容灾。

PAC 提供了几个内置的函数,下面一一介绍下:

dnsDomainIs

类似于 ,但是对大小写不敏感,

shExpMatch

Shell 正则匹配, 匹配用的比较多,可以是 ,也是可以下面这样,

if(shExpMatch(host,"vpn.domain.com") ||

shExpMatch(url,"http://abcdomain.com/folder/*")) {

isInNet

判断是否在网段内容,比如 这个网段, 就在网段中,

代理自动配置pac网址_pac自动代理脚本地址_pac自动代理

access-list 105 permit tcp 172.16.1.0 0.0.0.255 eq ftp anyaccess-list 105 permit tcp 172.16.1.0 0.0.0.255 eq ftp-data anyaccess-list 106 permit tcp 172.16.1.0 0.0.0.255 eq telnet any。ip10.0.0.0-10.255.255.255(a类)、172.16.0.0-172.31.255.255(b类)、192.168.0.0-192.168.255.255(c类)都是内网保留地址。ip 地址 10.0.0.0-10.255.255.255(a类)、172.16.0.0-172.31.255.255(b类)、 192.168.0.0-192.168.255.255(c类)都是内网保留地址。

myIpAddress

返回主机的 IP,

if(isInNet(myIpAddress(),"10.10.1.0","255.255.255.0")) {

return"PROXY 10.10.5.1:8080";

dnsResolve

通过 DNS 查询主机 ip,

if(isInNet(dnsResolve(host),"10.0.0.0","255.0.0.0") ||

isInNet(dnsResolve(host),"172.16.0.0","255.240.0.0") ||

isInNet(dnsResolve(host),"192.168.0.0","255.255.0.0") ||

192.168.1.35 255.255.255.255 127.0.0.1 127.0.0.1 20。access-list 101 permit ip host 10.2.0.0 host 255.255.255.0。192.168.2.5 255.255.255.255 127.0.0.1 127.0.0.1 50。

isPlainHostName

判断是否为诸如 , 这样的主机名,

代理自动配置pac网址_pac自动代理脚本地址_pac自动代理

if(isPlainHostName(host)) {

isResolvable

判断主机是否可访问,

if(isResolvable(host)) {

return"PROXY proxy1.example.com:8080";

dnsDomainLevels

返回是几级域名,比如 返回的结果就是 1,

if(dnsDomainLevels(host) >) {

}else{

weekdayRange

周一到周五,

if(weekdayRange("MON","FRI")) {

dateRange

pac自动代理脚本地址_代理自动配置pac网址_pac自动代理

一月到五月,

if(dateRange("JAN","MAR")) {

timeRange

八点到十八点,

if(timeRange(8,18)) {

alert

据说这个函数可以用来调试,不过我在 Chrome 上测试并未生效,

resolved_host = dnsResolve(host);

alert(resolved_host);

PAC 文件的安装和注意事项

这时选择“高级/网络”,点设置,就出现下面的界面,就可以进行代理服务器的设置了,选中“手动配置代理”,然后填写代理服务器的地址和端口。接下来就是设置你的qq、联众、foxmail等等,这几个都能设置socks代理,以上设置我们设置的socks代理是按照系统默认,端口为1080,那么我们设置qq、联众、foxmail代理类型选择 socks5,地址填写你的机器ip地址pac自动代理脚本地址,端口填写1080。工具——>设置——>拖动页面到底部,点击:显示高级设置按钮——>网络——>更改代理服务器设置——>点击:局域网设置——>高级——>进入代理服务器设置。

需要注意的几点:

PAC 文件被访问时,返回的文件类型(Content-Type)应该为: ,当然,如果你不写,一般浏览器也能够自动辨别

中的 host 在上述函数对比时无需转换成小写,对大小写不敏感

没必要对 的结果做缓存。