转载请注明出处:https://www.codelast.com/

在Ubuntu下,除了浏览器之外,为了能在系统全局层面上自动使用代理访问那些“不存在的网站”,有一个常用的做法就是,在Chrome的SwitchyOmega插件里的“自动切换”情景模式下“导出PAC”,得到一个PAC文件,放在磁盘的某个路径下(假设为:/home/codelast/OmegaProfile__.pac),然后在Ubuntu系统的网络设置里如下设置:


文章来源:https://www.codelast.com/
然后点击“应用到整个系统”。
貌似这样做之后,给人的感觉就是,在Ubuntu终端下也可以无障碍地访问Google了,但事实上并不可以——例如,你可以用如下命令试一下:

curl www.google.com

结果就是并不能打开Google的首页。
这是因为PAC只有在能解析js的客户端(例如Chrome浏览器)上才能生效,Ubuntu终端只认http_proxy和https_proxy两个环境变量。
所以这是不是意味着,我们只要把这两个环境变量设置成SwitchyOmega插件里设置的socks5代理地址就可以了呢?也不行,原因如下:

在Chrome上,是SwitchyOmega插件把HTTP和HTTPS流量转换成了socks协议的流量,才能使用socks代理。而Ubuntu终端是没有这样的协议转换的,所以没法直接使用sock5代理。这时候就需要一个协议转换器,例如Privoxy。

文章来源:https://www.codelast.com/
所以话不多说,直接安装Privoxy:

sudo apt install privoxy

然后修改它的配置文件 /etc/privoxy/config,在文件末尾添加如下内容:

forward-socks5 / 127.0.0.1:1080 . # SOCKS5代理地址
listen-address 127.0.0.1:8080     # HTTP代理地址
forward 10.*.*.*/ .               # 内网地址不走代理
forward .abc.com/ .             # 指定域名不走代理

其中,第1行的 127.0.0.1:1080 是你在本地的sock5代理地址,而第二行的 127.0.0.1:8080 则是sock5转换成的 http 代理地址,最后两行指定了两个不走代理的地址。
文章来源:https://www.codelast.com/
配置好之后重启Privoxy服务:
sudo /etc/init.d/privoxy restart
然后在命令行设置http_proxy和https_proxy两个环境变量:
export http_proxy="127.0.0.1:8080"
export https_proxy="127.0.0.1:8080"
现在,在终端用 curl www.google.com 测试一下,就会发现可以访问了。如果你想在Ubuntu终端的多个窗口都能生效,可以把这两个export加到 /etc/profile 里。
大功告成!
[原创] Ubuntu终端使用Privoxy代理
Tagged on:             

发表评论

电子邮件地址不会被公开。 必填项已用*标注