标签归档:科学上网

ubuntu中将socks5 转为http

privoxy有将socks代理转为http代理的功能。

安装privoxy

sudo apt-get install privoxy

配置provoxy

sudo vim /etc/privoxy/config

配置内容:

# 在 froward-socks4下面添加一条socks5的,因为shadowsocks为socks5,
# 地址是127.0.0.1:1080。注意他们最后有一个“.”
#        forward-socks4   /               socks-gw.example.com:1080  .
forward-socks5   /               127.0.0.1:1080 .

# 下面还存在以下一条配置,表示privoxy监听本机8118端口,
# 把它作为http代理,代理地址为 http://localhost.8118/ 。
# 可以把地址改为 0.0.0.0:8118,或:8118,表示外网也可以通过本机IP作http代理。
# 这样,你的外网IP为1.2.3.4,别人就可以设置 http://1.2.3.4:8118/ 为http代理。
 listen-address localhost:8118

重启privoxy:

sudo service privoxy restart

测试

curl -x localhost:8118 http://www.google.com

Chrome 的 PAC 代理配置方法

Linux 下的 Shadowsocks-Qt5 只负责监听本地的一个端口,为连接上来的请求提供代理服务,而哪些应该走代理哪些该走正常渠道,并不做区分,所以只能靠上层应用来区分了,即哪些应该连到 Shadowsocks-Qt5 监听的端口哪些不连上去。

执行 man google-chrome ,找到了如下选项:

–proxy-pac-url=URL
Specify proxy autoconfiguration URL. Overrides any environment variables or settings picked via theoptions dialog.

先从网上找了个 PAC 文件,将设置 proxy 的那句改成 var proxy = "SOCKS5 127.0.0.1:1080;";,我的 Shadowsocks-Qt5 监听的是 127.0.0.1:1080,协议是 SOCKS5。再把这个 PAC 文件存到固定一个位置,比如我存在了 /home/wolfogre/Documents/autoproxy.pac,然后再命令行里执行:/usr/bin/google-chrome-stable %U --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac,Chrome 打开了,已经可以开心地上 Google 了,而访问一般的网站也没有走代理。

问题来了,每一次打开 Google 都要敲这么长的命令简直反人类,我还是希望通过点菜单里的漂亮图标启动。菜单里的所有图标启动项其实都是 /usr/share/applications 里的 *.desktop 文件,关于这一点下一节会在做说明,现在要做的就是以管理员身份编辑google-chrome.desktop ,在里面每一句 Exec=/×××× (应该有三句,分别针对普通打开,新疆窗口,佚名打开)的行末追加 --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac

这时候打开 Chrome 就能开心地上 Google 了。