什么是PAC

PAC 介绍

摘自维基百科

代理自动配置(英语:Proxy auto-config,简称PAC)是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。

PAC文件

首先,你要有一个可用的代理。没有代理的话就自己想办法搞一个吧。我不教╭(╯^╰)╮

PAC(Proxy Auto Config)实际上就是一个脚本(Script),通过这个脚本,我们能够让系统判断在怎么样的情形下,要利用哪一台Proxy来进行联机。

PAC文件采用JavaScript编写,想要实现高级规则,最好有点JavaScript基础^_^

基本函数

先新建一个*.pac文件,然后输(fu)入(zhi)以下代码。

1
function FindProxyForURL(url, host) {

FindProxyForURL是PAC文件的“主函数”,PAC文件一定要定义它,所有的请求都会进入这个方法,然后匹配规则。

其中 return ‘DIRECT’; 表示直接使用本机网络直接访问,这一段目前的含义是所有请求通过本机网络直接访问。

PAC一共支持三种访问方式

  • DIRECT 直接联机而不透过 Proxy
  • PROXY host:port 使用指定的 Proxy 伺服机
  • SOCKS host:port 使用指定的 Socks 伺服机
    比如将代码改成
    1
    function FindProxyForURL(url, host) { return 'PROXY 127.0.0.1:7070';

则表示所有的请求,以HTTP方式,通过本机的7070端口访问。

通过域名匹配规则

我这里就介绍一个比较常用的规则,通过域名匹配,如果一个请求在一个域名下,我们就走代理访问。

直接上代码吧:

1
function FindProxyForURL(url, host) { if (autoproxy_host.hasOwnProperty(host)) { return 'PROXY 127.0.0.1:7070'; lastPos = host.indexOf('.') + 1; host = host.slice(lastPos);

其实会Js的朋友应该很容易就能看懂了,不断分隔域名,然后去匹配autoproxy_host中设定好了的域名,如果匹配上了,我们就通过本机7070端口代理访问,否则就直接通过本机网络访问。比如这里,访问google.com和twitter.com的时候,就通过代理访问。

实际上用的时候,记得把127.0.0.1:7070换成你自己代理,如果是SSH的代理,就用SOCKS就好了。

使用PAC文件

Windows

Windows上面使用PAC文件很简单,新建一个你的PAC文件,放在一个固定的位置,比如

1
D:\学习资料\国外学习资料\中外文化交流\跨越\别看\说了别看\搞毛啊\setting.pac

然后,Internet设置 -> 连接 -> 局域网设置


勾选“自动检测设置”以及“使用自动配置脚本”,在“地址”里面填写
file:\\\ 加 文件路径,如下


然后多确认几次就好了,打开浏览器或者IE(没错我就是来黑IE的)试试看吧!

Mac OSX

Mac上面比较麻烦,因为最新的OSX是不支持本地文件设置的,你需要填写一个网络地址。比较好的办法是你现在本地建立一个服务器,然后把你的pac文件丢进去,然后通过http能访问就好了。

在Mac上建立本地服务器的方法很多,比如自带的apache。直接在命令行输入

一般默认的目录都是/Library/WebServer/Documents,你也可以修改/etc/apache2/httpd.conf 里面的 DocumentRoot配置项,修改服务器的默认路径。

把pac文件放进根目录,然后就可以直接通过 http://localhost/file.pac 来访问了。

接下来是配置网络,系统偏好 -> 网络 -> 高级 -> 代理

勾选“Automatic Proxy Configuration”,在右侧填写pac文件路径就好了。


至此,大伙儿就开开心心地来“科学上网”吧!!!(^o^)/!!

结束语

然后,没错,我就是被颜大大拜托过来耍宝的!= ̄ω ̄=

如何使用PAC文件“科学上网”