Fuzqing

Linux 使用 ShadowSocks + Privoxy 实现 PAC 代理
以下安装配置方式基于 Ubuntu18.04Shadowsocks篇 -- 科学上网神器安装(服务端这里不做解释)...
扫描右侧二维码阅读全文
13
2018/07

Linux 使用 ShadowSocks + Privoxy 实现 PAC 代理

以下安装配置方式基于 Ubuntu18.04

Shadowsocks篇 -- 科学上网神器

安装(服务端这里不做解释)

sudo apt install python-pip
sudo pip install shadowsocks
sudo ln -s /usr/local/python/bin/sslocal /usr/bin/sslocal

配置

sudo vi /etc/shadowsocks.conf
{
"server":"your_server_ip",
"server_port":your_server_port,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_server_passwd",
"timeout":300,
"method":"aes-256-cfb"
}

启动

sudo sslocal -c /etc/shadowsocks.conf -d start

说明

如果不需要终端走HTTP上网,仅仅需要浏览器代理上网的话,推荐使用SwitchyOmega浏览器插件来管理代理上网,这个插件很强大、很灵活,配置起来也很简单,这里就不多做累述了。
下面的步骤是配置全局使用HTTP代理。


Privoxy篇 -- 将Socks5转换为HTTP代理

安装Privoxy之前我们先来测试一下,看看终端是否能够走代理上网

curl www.google.com

发现明显是不行的,因为Shadowsocks属于socks5协议,不能全局使用,所以需要把socks5转为HTTP协议。

安装

sudo apt install privoxy

配置

sudo vi /etc/privoxy/config

找到 listen-address 确保有这行代码 listen-address 127.0.0.1:8118

找到 forward-socks5 确保有这行代码并且打开注释(没有自己加) forward-socks5 / 127.0.0.1:1080 .

启动

sudo service privoxy start
sudo service privoxy status

配置环境变量,让终端也能走代理

# 全局环境变量
vi /etc/profile
# 用户环境变量
vi ~/.bash_profile
vi ~/.bashrc
# ======================
# 文件末尾处都添加上以下内容
proxy="http://127.0.0.1:8118"
export https_proxy=$proxy
export http_proxy=$proxy
export ftp_proxy=$proxy

验证一下

curl www.google.com

发现可以上了,是不是很开心,再来试一下:

# 搜狐的这个接口能够返回你的IP地址
curl "http://pv.sohu.com/cityjson?ie=utf-8"

发现我们目前在终端任何HTTP连接都走了代理了,这不符合我们的预期,我们希望的让代理走pac模式:需要的连接才代理,不需要的就不用代理。
好了,我们来看看Privoxy如何使用pac模式,首先需要一个符合Privoxy的pac规则的文件,可以使用GFWList2Privoxy来生成。

安装 GFWList2Privoxy

pip install --user gfwlist2privoxy

获取gfwlist文件,生成actionsfile

cd /tmp
wget https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
~/.local/bin/gfwlist2privoxy -i gfwlist.txt -f gfwlist.action -p 127.0.0.1:1080 -t socks5
sudo cp gfwlist.action /etc/privoxy/

gfwlist.action 长这样子:

其实它的格式很简单,如果以后某个pac文件之外的网站也想走代理的话,那么仅需要把域名添加到pac文件里面就可以了,比如添加wp.com到pac里面:

echo '.wp.com' >> /etc/privoxy/gfwlist.action

好了,生成这个pac文件之后,如果需要让终端代理自动走pac模式的话,则需要在/etc/privoxy/config文件中
加上actionsfile gfwlist.action

重启Privoxy,测试代理是否走了pac模式

curl www.google.com

OK,没问题,google还是可以访问的;

curl "http://pv.sohu.com/cityjson?ie=utf-8"

这个也OK,返回的是我们自己宽带的IP,也没问题。

注意

如果还是显示代理服务器的IP,则把/etc/privoxy/config中的forward-socks5 / 127.0.0.1:1080 .这一行注释了,然后重启privoxy
如果不注释这行,所有的流量都走代理,我们刚才做的pac模式,它就不走了。

感谢

xwydq
xuchunyang

Last modification:March 24th, 2019 at 02:26 pm
If you think my article is useful to you, please feel free to appreciate

7 comments

  1. peter

    blog主题不错,很炫

    1. Fuzqing
      @peter

      |´・ω・)ノ,欢迎来访!改了一下动态背景,感觉阅读体验差了很多,没工夫做调整

  2. gongmc

    [/etc/privoxy/config中的forward-socks5 / 127.0.0.1:1080 .这一行注释了 ]
    这个注释了,就无法进行curl google.com

    1. Fuzqing
      @gongmc

      如果想让流量走pac的话

      forward-socks5 / 127.0.0.1:1080 .这行需要注释

      如果不注释,所有的流量都走代理,我们刚才做的pac模式它就不走了。

      1. gongmc
        @Fuzqing

        嗯,试了试,明白了,谢谢!

  3. MikuSama
    全局环境变量

    vi /ect/profile
    应该是/etc/profile

    1. Fuzqing
      @MikuSama

      感谢提醒,已修正。

Leave a Comment