编写PAC文件

今天无意间接触到有人说可以自己写代理于是就查找了资料自己谢了一个简单的代理。
这里写的非常简单,只用到了几个简单的函数,下面进行简单的介绍:
pac文件就是扩展名是pac的一个文件,里面的方法都是javascript编写的,懂javascript就不必多说了,即使一点不懂的也应该很容易看明白。
下面开始介绍一下文件的写法,首先是文件中必须用到的一个函数:FindProxyForURL(url,host),PAC文件中必须包含这个函数,因为只要文件被引入调用就会查找这个函数,然后根据里面设置的规则进行匹配。
首先来一个最简单的pac文件的代码。

function FindProxyForURL(url, host) {
return "DIRECT";
}

上面是非常简单的一个javascript函数,只有一个返回值是一个字符串"DIRECT",在这里“DIRECT”的意思是直接连接,不通过代理。
FindProxyForURL(url, host)3种常用的返回值:
1)DIRECT 这个很简单就是直接链接
2)"PROXY www.example.com:8080"或者"PROXY 127.0.0.1:8080" 这个就是HTTP代理的主机和端口值,主机可以是域名或者IP地址
3)"SOCKS5 socks5sample.com:1080" socks5代理的主机和端口,主机也可以用IP表示
4)最后一种就是多种混用的返回方式:"DIRECT ; PROXY www.example.com:8080; SOCKS5 socks5sample.com:1080"就是先直接连接,直接连接不可用再调用HTTP代理,还不可用就再调用SOCKS5代理
上面的代码其实是没有什么意义的,因为直接连接还不如不设置,浏览器本身就是直接链接。下面介绍几个有用的函数来丰富我们上面的代码,使pac文件真正的起到代理的作用。
1) shExpMatch(str, shexp)函数,
功能:看str能否匹配shexp
参数介绍:
str参数一般就传入FindProxyForURL(url, host)中的url,这也就是我们要访问的网址,
shexp这个参数从名字上也能看出一点来,不错这个是一个可以让我们过滤出满足条件的正则表达式(这个如果不会可以自己去调查,这里不做介绍。)
返回值: boolean(true/false),str匹配shexp成功则返回true失败则返回false
举例:shExpMatch("www.google.com","*.google.*") 返回true
shExpMatch("www.google.com","*.baidu.*") 返回false
这样我们就可以接下来这么写:

function FindProxyForURL(url, host){
if(shExpMatch(url,"*.google.*")){
return "127.0.0.1:8087";
} else {
return "DIRECT";
}
}


简单的代码就写到这里,还有更复杂的就不介绍了,可以自己去写,然后下面提供一下写PAC文件常用的一些函数,传送门:[url]http://www.truevue.org/javascript/pac-functions[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值