linux下的命令,大多不支持PAC形式代理,只支持http/socks代理形式。因此为了使用PAC文件做代理,必须要通过三方软件来转发这部分代理的流量。privoxy是一个支持PAC代理的程序,可以根据不同规则选择代理线路,我们可以使用它来作为代理软件转发客户端流量。privoxy官方网站:www.privoxy.org

测试环境:centos6 + centos7。

一、安装privoxy

安装privoxy的方式有以下几种:

  1. rpm包方式安装或源码包下载编译安装
  2. 使用yum命令一键安装

方式1可以在官方网站找到源码包和安装包,安装相对麻烦一些,centos系统推荐使用原生的包管理工具yum来安装,前提是要安装epel源,国内epel源可以选择阿里云的源,下载速度快(使用方式参考Epel 镜像帮助)。

使用yum安装privoxy的:

yum install privoxy

安装好后,启动进程:

# centos 6
service privoxy start
# centos 7
systemctl start privoxy

添加到开机启动:

# centos 6
chkconfig --add privoxy
chkconfig privoxy on
# centos 7
systemctl enable privoxy

二、配置privoxy以支持PAC

privoxy的配置文件目录是/etc/privoxy/,在目录下添加文件pac.action,内容:

{{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添加修改:

# 添加我们自定义的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,默认只支持本地的代理,如果需要更改的话改以下配置:

listen-address  127.0.0.1:8118

没有特殊要求的话可以使用默认配置,改完后启动privoxy进程就可以了。

注意:进程启动后,如果修改了pac规则,需要重新启动进程才能生效。

三、配置系统

给本机设置代理环境变量:

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规则的走指定线路,没有配置的走本机。

最后修改:2020 年 04 月 03 日
如果觉得我的文章对你有用,请随意赞赏