作为一个前端开发,不能使用Google,那不就是相当于失去了左板右臂,这怎么可以? 但是要钱的FQ服务又有点贵,不舍得花钱,那今天我们就来薅一把亚马逊爸爸的羊毛。

创建服务器展开目录

1.1 原理

众所周知目前的网页访问基本都是 C/S 模式,而在中国由于客户机向服务器的发起的请求,如果是禁网则可以被 GWF 识别封杀,那么我们的原理就是让一个客户机(对我们来说它就是我们的代理人)在国外替我们拿到数据然后再传回来,为了防止传回的数据被 GWF 识别,我们要对数据加密,目前比较优秀的即使 shadowsocks。

1.2 服务器架设

这里利用的是 AWS(Amazon Web Services),是亚马逊提供的在线虚拟主机服务。现在 AWS 提供的基础服务免费一年,流量每月 15G,只要你不是天天上网下大文件的话,一般不会超。
之所以选择 AWS,首先是因为它比较稳定,并且它有东京的节点。网上很多其他主机商的节点都远在美国,距离近延迟低是铁律。
虽然中国人都喜欢免费的东西,但还是建议有钱的豪还是选择付费。

1.2.1 申请 AWS 账号

如果以下任何一步中出现灰色页面一个橘黄圈圈不停在转的话,多刷新几次就好。

  1. 首先搜索 “AWS”,第一个打开就是 https://www.amazonaws.cn/
  2. 注册一个账号,如果你之前有在 Amazon 买过东西,直接用那个账号也可以。
  3. 填好邮箱密码之后会要求填一些个人信息,这里选择个人账户,姓名、地址和电话,可以照实填,乱填应该也没关系,因为我第一次填的特别详细结果进去以后全成了乱码。
  4. 接下来要填写付款信息,只支持信用卡,银联 Visa 等都可以。我自己使用的某宝的虚拟 aws EC2 信用卡。因为 AWS 采用的是基础服务免费,超出基础服务以外的部分收费。比如说一个月流量超出 15G 的话是会收钱的。收钱的时候是直接卡里扣不会通知你的。这一步目前没有发现绕过的方法,填好之后点 “继续”。 因此使用虚拟卡放心一些。
  5. 然后是身份验证部分,这里比较麻烦。国家选中国,填入手机号(推荐)或者座机号(注意区号),分机没有的话留空就好了,然后点“立刻呼叫我”。之后会出现一个页面,同时接到一个电话。电话是英文的,会让你输入 PIN 码。等对面说完话之后直接按就好。按完之后稍等一会挂掉,等待网页刷新。
  6. 点击“继续选择支持方案”。选择“基本(免费)”点“继续”。此时账号应该就创建好了,邮箱应该会收到几封邮件。

1.2.2 创建服务器

  1. 进入 aws 主页,https://www.amazonaws.cn/。右上角点击 “我的账户”,再点击 “aws 控制台”,输入邮箱和密码。登录.
  2. 右上角用户名后面有一个地区选择,选择合适的地区。发给你的邮件中有通知你可以在哪些地区创建主机。如果你在选择其他地方创建,则会失败。
  3. 点击左上角的服务,出现一个下拉列表,选择 EC2。如果你之前填的信用卡有问题,可能会出现一个页面,提示:确保你之前的信息提供正确等,这时你就需要点解右上角用户名选择 “我的账户”,再选择 “付款方式” 更该信用卡信息。
  4. 点击 “启动实例”
  5. 找到 “Ubuntu Server 16.04 LTS(HVM)…”,点击 “选择”。请特别注意图标上 “符合条件的免费套餐” 字样。不带这个字样的都要钱。
  6. 然后,仍旧选中 “符合条件的免费套餐”,然后点击蓝色按钮 “审核和启动”。
  7. 接着直接点击 “启动”。
  8. 之后会弹出来一个创建密匙对的框,在第一个下拉框中,选择 “创建新密匙对”。在第二个框中输入你的密匙对的名字,这里取名叫“r3”。点“下载密匙对”,会下载一个叫“r3.pem”的文件,把文件保存在一个绝对安全的地方。这里的密匙相当于进入你的服务器的钥匙,只要有这把钥匙,任何人都可以进入你的服务器为所欲为。所以请好好保管。这个文件丢失的话,首先你自己的服务器就上不去了,其他的后果应该会很严重吧,所以请好好保管。你可以制作备份。
  9. 保存好之后,点“启动实例”。至此为止,你的服务器已经创建好。
  10. 点击页面中第一个绿色框里你的服务器名字,这里是“i-405c2fe5”,跳转到以下页面。这里有几个关键信息需要记下 。一个是公有DNS,另一个要往右边拉一下滚动条,公有IP,拿笔写下来。

远程连接服务器展开目录

2.1 原理

有计算机只是的应该懂得,远程连接服务器指的就是用一个终端(什么是终端?终端就是客户端)连接服务器,然后在服务器做一些列的操作。常用的终端 xshell,putty 都可以。

2.2 连接

2.2.1 Windows 平台

在 Windows 中,我们需要用到两个软件,一个叫 “putty”,一个叫 “puttygen”。putty 可以把它看做是一个连接你和服务器的超时空隧道,但是它不认识 aws 提供的钥匙(就是你刚才下载的 r3.pem),首先我们要配一把新钥匙。

  1. 打开 puttygen。选中菜单栏中的 “密钥(k)”,选中下拉菜单 “SSH-2 RSA”。
  • 点解 “load” 或“载入”。在打开的对话框中,选择文件类型下拉框为“All Files(.)”,然后找到前面我们保存的钥匙“r3.pem”,然后打开。
  • 确定”。然后点击 “Load” 下面的 “Save private key” 按钮。
  • 弹出的对话框点 “是”,保存为一个 *.ppk 文件,就把它继续命名为 “r3.ppk”。这就是我们的新钥匙啦,同样请好好保存。
  • 接下来关闭 puttygen,打开 putty。
  • 点击 “session” 或“会话”。右边,“Host Name(or IP address)”这里填写“ubuntu @服务器公有 DNS”,例如:ubuntu@ec2-54-238-211-149.ap-northeast-2.compute.amazonaws.com
  • 端口保持默认的 “22”,“Connection type” 选择“SSH”。
  • 在左边的树状目录中,展开 “Connection” 下的 “SSH”,找到“Auth” 或“认证”,点击 “Auth”,在右边点击“Browse…” 或者“浏览”,选中刚刚我们配的新钥匙“r3.ppk”,其它地方不动,然后回到刚才的“Session”。
  • 点击右下角的 “Open” 或“打开”。
  • 接下来会打开一个像 windows 的 cmd 命令行一样的黑框如下
  • 弹出对话框点击 “是”
  • 出现 ubuntu@ip-x-x-x-x:!$ 表示连接成功。

2.2.2 Mac 平台

转到Mac上之后,不用在使用之前window上面的putty的方法了,可以直接用命令行SSH登录。实际在aws上面已经直接介绍了使用linux访问ec2的方法,我们只需要直接按照上面的方法做就可以了。打开aws实例,反键点击connect,选择Connect with a standalone SSH Client,可以看到:

  1. 打开 SSH 客户端。

  2. 查找您的私有密钥文件(r3.pem)。向导会自动检测您用于启动实例的密钥。您的密钥必须不公开可见,SSH才能工作。需要使用此命令:
    chmod 400 r3.pem

  3. 通过其 公有DNS 连接到您的实例:
    ec2-54-238-211-149.ap-northeast-2.compute.amazonaws.com
    示例:
    ssh -i "r3.pem" ubuntu@ec2-54-238-211-149.ap-northeast-2.compute.amazonaws.com
    请注意,在大多数情况下,上述用户名都是正确的,但请确保您已阅读了 AMI 使用说明以确定 AMI 所有人没有更改默认的 AMI 用户名。

  4. 出现 ubuntu@ip-x-x-x-x:!$ 表示连接成功。

搭建 shadowsocks 服务端展开目录

3.1 安装

  1. 连接上之后,首先要将我们当前登录的用户提升至 root 权限,输入如下代码并回车

    sudo -s

    你会发现光标前面的 “$” 变成了 “#”,并且行首的“ubuntu” 也变成了“root”。

  • 接下来输入如下命令并回车

    apt-get update

    就当作是在安装更新包吧,完成后会显示 “Reading package lists… Done”。

  • 然后输入如下命令并回车

    apt-get install python-pip

    安装过程中可能会让你确认[Y/n],输入 y 然后回车就好。

  • 安装关键程序 ShadowSocket,输入如下命令并回车

    pip install shadowsocks

    出来一大段字后只要有显示的是 “Successfully …” 那么就表示安装成功了。

3.2 配置 shadowsokcet

3.2.1 主要是修改其中的一个配置文件。

输入如下命令

vi /etc/shadowsocks.json

在这个视图中有如下几个按键需要记住:

  • “i”:按键盘上的 i 键,窗口最底下显示 “insert”,表示当前文件可编辑。
  • “Esc”:编辑完之后按 Esc 退出编辑模式。
  • “:”:半角的冒号,在非编辑模式下按键盘上的冒号(半角),可以进入输入命令的模式。
  • “w”:在命令模式中输入 w 并回车,窗口最下显示 “written”,表示所做的更改已保存。
  • “q”:在命令模式中输入 q 并回车,可以退出当前的编辑器。

3.2.2 单一用户配置(推荐)

按 “i” 之后输入如下代码

{
"server":"0.0.0.0",
"server_port":8989,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"yourpassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

这里需要注意几个地方:

  • 所有的字母,符号和数字都是在半角状态下输入的
  • 每一个标点符号都很重要,不能多也不能少
  • 每一行都是由左右两边组成,每一行冒号左边都是有引号的
  • 右边的部分需要自己手动修改的只有第三行 “端口” 和第六行“密码”。其它不变
  • “port” 这里是没有引号的,并且需要改成一个数字。我一般习惯用8848或者11383。但是注意这个数字是不能随便乱写的。
  • “password” 这里可以自己填写,但要注意是有引号的
  • 除了倒数第二行以外(大括号前一行),每一行都要以半角逗号作为结尾
  • 首尾行的大括号不要忘记了

输入完之后按 Esc 退出编辑,然后先按: wq 保存。

3.2.3 多用户配置(进阶)

如果你不介意和朋友分享的话,可以照下面的设置来添加多个用户。但不推荐太多人共享,一个原因是免费的主机内存硬盘空间都很有限,太多用户的话可能负担比较重。另一个原因流量只有 15G 哎,先确定自己够用再想别人吧。并且实际上,访问次数也有限制,只不过这个限制对于单个用户来说实在用不完。

同上一步一样,键入 “i” 然后输入如下代码

{
"server":"0.0.0.0",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
    "8989":"password0",
    "9001":"password1",
    "9002":"password2",
    "9003":"password3",
    "9004":"password4"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

第三行和第六行是由另一对大括号包围起来的,这中间的部分填写端口和密码。每一对端口和密码对应一个用户,后面设置的时候会用到。多一个用户就多加一行。注意”password4” 之后因为下一行就是大括号,所以这里不用加逗号,第六行的大括号之后需要加逗号
上图做了一个示范,其中第一个用户使用 “11383” 的端口,密码是 “paral3”;第二个用户使用“8848” 的端口,密码是“abcdefgh”。如果要添加更多用户,就在第五行后面回车按相同的格式添加就可以了。

完成后 “:wq” 保存退出。

3.3 运行 SS

3.3.1 直接输入如下命令并回车

ssserver -c /etc/shadowsocks.json -d start

完成后出来两行字,最后一个单词明明白白告诉你 “started”。

3.3.2 添加开机启动项,让以后服务器重启之后 SS 会自动开始工作。

首先键入如下命令并回车

vi /etc/rc.local

在第二行处加入一个空行,

ssserver -c /etc/shadowsocks.json -d start

把我们上面让SS开始工作的命令完整地输入进去。

然后 “:wq” 保存退出。可以把当前代码窗口关掉啦。

3.4 打开服务区端口

  1. 首先我们回到 AWS 的网站上登入。和之前一样找到 EC2 进入。
  • 在右边点击 “实例”,在实例列表中,我们可以看到我们当前正在运行的主机。如果:在实例列表中找不到你的主机的话,先看看右上角区域是不是之前选择的区域。
  • 将这个列表的滚动条往右拉,出现安全组标签。
  • 点击我们实例的安全组 “launch-wizard-1”。进入到了实例的安全组设置中。在左下部点击 “入站” 标签页,并点击编辑。
  • 点击 “添加规则”,添加的规则中“类型”“协议” 都不需要改动。“端口范围”这里填上我们前面设置的端口,“来源”下拉框中选择“任何位置”。
  • 如果之前有添加多用户的话,需要在这里把所有分配出去的端口都分别添加上去
  • 保存退出

客户端配置展开目录

有了运行在服务器上的服务端,还需要本地的客户端。客户端已经大牛写好了,

放在 github 上的 https://github.com/shadowsocks/shadowsocks/wiki/Ports-and-Clients#os-x

可以找对应平台下载,android 可以在 play 商店下载。

通用设置就是:

  1. 找到服务器选项
  • 编辑服务器,输入之前记录的公网ip,设置的端口,密码,然后确定
  • 启用系统代理
  • 代理方式:自动模式(只有被墙的才会走代理),全局代理(国内网站也会走代理)

错误记录

在安装 Shadowsocks 时,使用 pip install 命令出现了下面这个错误:

# pip install shadowsocks
Traceback (most recent call last):
  File "/usr/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib/python2.7/locale.py", line 581, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

其实是语言配置错误导致的,解决方案:

export LC_ALL=C