linux下的命令,大多不支持PAC形式代理,只支持http/socks代理形式。因此为了使用PAC文件做代理,必须要通过三方软件来转发这部分代理的流量。privoxy是一个支持PAC代理的程序,可以根据不同规则选择代理线路,我们可以使用它来作为代理软件转发客户端流量。privoxy官方网站:www.privoxy.org。
测试环境:centos6 + centos7。
一、安装privoxy
安装privoxy的方式有以下几种:
- rpm包方式安装或源码包下载编译安装
- 使用yum命令一键安装
方式1可以在官方网站找到源码包和安装包,安装相对麻烦一些,centos系统推荐使用原生的包管理工具yum来安装,前提是要安装epel
源,国内epel
源可以选择阿里云的源,下载速度快(使用方式参考Epel 镜像帮助)。
使用yum安装privoxy的:
1 |
yum install privoxy |
安装好后,启动进程:
1 2 3 4 |
# centos 6 service privoxy start # centos 7 systemctl start privoxy |
添加到开机启动:
1 2 3 4 5 |
# centos 6 chkconfig --add privoxy chkconfig privoxy on # centos 7 systemctl enable privoxy |
二、配置privoxy以支持PAC
privoxy的配置文件目录是/etc/privoxy/
,在目录下添加文件pac.action
,内容:
1 2 3 4 5 6 7 8 9 10 |
{{alias}} default = +forward-override{forward .} pac = +forward-override{forward 10.66.83.23:8080} {default} / {pac} .baidu.com .qq.com |
配置简单说明:
- alias段:定义转发规则,目前是定义了两种。default表示默认规则,后面的
forward .
表示默认走本机。pac表示自定义的pac规则,后面的forward 10.66.83.23:8080
表示通过10.66.83.23:8080的HTTP代理出去。 - default段:匹配默认规则的地址,
/
表示默认的,如果没有匹配其他规则就匹配这个规则。 - pac段:需要进行代理转发的域名,下面的地址会通过上面定义的代理地址转发出去。
以上配置的意思就是,*.baidu.com和*.qq.com域名通过10.66.83.23:8080代理,其他的默认走本机代理。其他需要代理的地址也可以加在下面。
然后在主配置文件中config
添加修改:
1 2 3 4 5 6 7 8 9 10 |
# 添加我们自定义的PAC规则 actionsfile pac.action # 下面这几行是系统预定义的转发规则,注释掉 # actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on. # actionsfile default.action # Main actions file # actionsfile user.action # User customizations # 下面这几行是系统预定义的过滤规则,注释掉 # filterfile default.filter # filterfile user.filter # User customizations |
程序默认监听端口是8118,默认只支持本地的代理,如果需要更改的话改以下配置:
1 |
listen-address 127.0.0.1:8118 |
没有特殊要求的话可以使用默认配置,改完后启动privoxy进程就可以了。
注意:进程启动后,如果修改了pac规则,需要重新启动进程才能生效。
三、配置系统
给本机设置代理环境变量:
1 2 |
export http_proxy=http://127.0.0.1:8118 export https_proxy=http://127.0.0.1:8118 |
然后使用wget或者curl命令测试即可!要注意的是环境变量只对当前终端生效,退出当前会话后就没有了。如果希望每次登录都生效,则需要把这两个命令放到~/.bashrc
或者/etc/profile
中。
四、原理说明
开启privoxy代理后,流量会全部发到privoxy,然后privoxy来决定流量走哪。配置了PAC规则的走指定线路,没有配置的走本机。
评论