ss-local 全局代理

ss-local 是 shadowsocks 的本地 socks5 服务器,如果需要使用 ss-local 提供的 socks5 代理,必须让应用程序使用 socks5 协议与之通信。但是很可惜,除了部分浏览器、软件直接支持 socks5 协议外,其它的都只支持 http 代理。因此,我们需要借助 privoxy 来将 http 代理协议转换为 socks5 代理协议,与后端的 ss-local 进行通信。

ss-local

安装

读者可自由使用 shadowsocks(python 版、libev 版)、shadowsocksR(python 版、libev 版)的任意一个,没有限制。
python 版的特点是没有 ss-redir、ss-tunnel,且不需要编译,只需 python 环境;libev 则是使用 c 语言开发的,性能较好。
本文以使用广泛的 shadowsocks(python、libev)为例,shadowsocksR(python、libev)的安装方式类似,具体请谷歌。

python

libev

配置

vim /etc/ss-local.json
{
    "server": "1.2.3.4",
    "server_port": 8989,
    "method": "aes-128-cfb",
    "password": "123456",
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "fast_open": true,
    "workers": 2
}

## 配置说明:
{
    "server": "1.2.3.4",          # 服务器IP
    "server_port": 8989,          # 服务器Port
    "method": "aes-128-cfb",      # 加密方式
    "password": "123456",         # 端口密码
    "local_address": "127.0.0.1", # 本地监听IP
    "local_port": 1080,           # 本地监听Port
    "fast_open": true,            # TCP Fast Open
    "workers": 2                  # worker进程数量
}

运行

privoxy

安装

## CentOS/RHEL
yum -y install privoxy

## ArchLinux
pacman -S privoxy

全局

全局模式是最简单最粗暴的,即:所有流量都走 ss-local,不区分什么国内国外。
所以请确定是否需要这种模式,如果不需要,请跳过此段,直接到 - gfwlist 模式

gfwlist

gfwlist 是由 AutoProxy 官方维护,由众多网民收集整理的中国大陆防火长城的域名屏蔽列表;
因为这是 Firefox 浏览器直接使用的一种格式,要在 privoxy 上使用就需要进行相应的格式转换;
这里我提供一个 shell 转换脚本,除了正则语法无法自动处理外,其它的基本 OK,gfwlist2privoxy

环境变量

有两种方式可以实现全局代理,推荐使用 proxychains-ng,因为更彻底。

  • http_proxyhttps_proxy环境变量:非强制性的环境变量,部分软件可能不遵守;
  • proxychains-ng 的LD_PRELOAD环境变量:强制性的环境变量,用来实现动态库替换。

http_proxy 方式:

proxychains 方式:

代理测试

简单测试


# 访问网站,有网页源码输出说明 OK
curl -4sSkL https://www.baidu.com
curl -4sSkL https://www.google.com
curl -4sSkL https://www.google.co.jp
curl -4sSkL https://www.google.com.hk
curl -4sSkL https://www.youtube.com
curl -4sSkL https://www.facebook.com
curl -4sSkL https://www.wikipedia.org

# 获取当前 IP 地址,应该显示本机 IP
curl -4sSkL http://ip.chinaz.com/getip.aspx

详细调试