我们在使用代理上网时,经常要去手动的配置浏览器或者系统的代理设置,但是也可以通过自动代理配置文件来自动配置。在这里教下大家如何自己写PAC自动代理配置文件,你看完后就会知道,原来写PAC自动代理配置文件其实很简单。
PAC自动代理配置文件
首先PAC文件是纯文本格式的,实际上就是JavaScript文件。一个最简单的PAC文件的内容如下:
function FindProxyForURL(url, host) {
return "DIRECT";
}
在PAC自动代理配置文件中必须包含 FindProxyForURL(url, host)这个函数。在上面的例子中,FindProxyForURL(url, host)函数返回值为 "DIRECT"
,即什么也不做,直接DIRECT(直接联网)。
FindProxyForURL(url, host)的返回值
FindProxyForURL(url, host)函数返回值类型有以下几种:
- DIRECT
- PROXY proxysample.com:8080 或者 PROXY 10.12.8.196:8080
- SOCKS5 socks5sample.com:8080 或者SOCKS5 10.12.8.196:8080
返回值DIRECT为直接联网,即不使用代理设置联网。PROXY proxysample.com:8080即表示http代理的主机和端口,当然主机也可以用IP表示。SOCKS5 socks5sample.com:8080 即表示socks5代理的主机和端口,同样主机也可以用IP表示。
PAC自动代理配置文件示例
1.用PAC指定一个http代理时,pac 文件可以这么写:
function FindProxyForURL(url, host) {
return "PROXY 192.168.1.1:808";
}
表示通过http代理上网,代理服务器的地址和端口分别为192.168.1.1和80
8。
2.多个代理的pac 文件这么写:
function FindProxyForURL(url, host) {
return "DIRECT; PROXY 192.168.1.1:808; SOCKS5 proxy.tujing.site:808";
}
表示首先不通过代理联网,如果无法连接则使用http代理,其次使用SOCKS5代理连接
3.特定网站使用代理
function FindProxyForURL(url, host) {
if (shExpMatch(url,"*.google.com/*")) {
return "PROXY 192.168.1.1:808";
}
if (shExpMatch(url, "*.wikipedia.com:*/*")) {
return "SOCKS5 proxy.tujing.site:808";
}
if (isInNet(host, "10.0.0.0", "255.0.0.0")){
return "DIRECT";
}
return "DIRECT; PROXY 192.168.1.1:808; SOCKS5 proxy.tujing.site:808";
}
上面的PAC文件表示:
- 当url是*.google.com/* 时,自动使用PROXY代理;
- 当url是*.wikipedia.cm/*时,自动使用SOCKS5代理;
- 当host是10.0.0.0 /255.0.0.0的子网内时,自动直连;
- 如果都不匹配,则依次按DIRECT、PROXY、SOCKS5的次序尝试。
自动代理设置
你可以将PAC文件上传到服务器,这样会得到一个url,以后在配置代理时可以直接通过PAC自动代理配置文件来配置。在配置代理时,只需要填写PAC文件的url即可。
1.在浏览器中设置:
2.linux自动代理设置:
这是一个PAC文件示例:proxy.pac