这标题绝对不是装逼。明明是学习技术,为了超英赶美来着,然而安装个插件,下个代码什么的,完全不行。。。唉,当初写安卓则更是痛苦。

如果你有渠道购买稳定VPN,并且不差钱的话,就不用往下看了,自己倒腾太麻烦。

目前记录的是我现在的翻墙方案,比较少,我也是能用就打住了。以后遇到新的方法,会添加进来。

你有一个shadowsocks账号

安装shadowsocks客户端:

yum install python-setuptools && easy_install pip
pip install shadowsocks

运行shadowsocks客户端:

sslocal -s SERVER_ADDR -p SERVER_PORT -k PASSWORD -m METHOD

或者使用配置文件:

sslocal -c configure_file

配置文件的格式为:

1
2
3
4
5
6
7
8
{
"server":"my_server_ip",
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"timeout":600,
"method":"aes-256-cfb"
}

一般情况下,我们需要让shadowsocks后台运行,可以用参数-d让shadowsocks以deamon的方式执行:

sslocal -c configure_file -d start
sslocal -c configure_file -d stop
sslocal -c configure_file -d restart

shadowsocks默认在本机127.0.0.1:1080上建立一个socks5代理。

你有一个国外主机

使用SSH翻墙

这是最简单方法。一句话就可以搞定。

ssh -gCNf -D 1080 user@host

这样就会在本机的1080端口上,开起一个socks5代理。很多shell命令是支持socks5的,所以这样执行命令即可:

ALL_PROXY=socks5://127.0.0.1:1080 curl www.google.com

使用COW自动化翻墙

上面的翻墙方法有两个问题:

  1. 有些命令不支持socks代理,仅支持http代理(这个没有考证过,是个人猜测)。
  2. 一旦指定代理就都走代理,代理一般会慢一些
  3. ALL_PROXY在mac下有有效,在centos下无效(其他Linux发行版未测试),必须

    curl --socks5-hostname 127.0.0.1:1080 www.google.com
    

COW 是一个简化穿墙的 HTTP 代理服务器。它能自动检测被墙网站,仅对这些网站使用二级代理。

安装COW:

curl -L git.io/cow | bash

这时我发现,特么的,cow都被墙了。。。。

2016年07月06日
mac上的shadowsocks只能本机使用,也就是只会监听127.0.0.1上的。使用COW,可以让虚拟机利用本机的shadowsocks翻墙。

http_proxy=192.168.1.107:7777 https_proxy=192.168.1.107:7777

这里192.168.1.107就是宿主机子的IP。

你没有一个国外主机