项目地址:https://github.com/trailofbits/algo

Algo

最近国内很多果然都被封掉了,我等屁民为了能好好写代码不得不想办法自己弄个微批恩。 在看了不少网上的教程,发现用 Algo 应该是比较简单的方法了。Algo的好处,这篇文章说了很多,我就不一一翻译了。我觉得这个梯子最大的好处就是可以屏蔽很多广告?。

自己搭建梯子就需要在国外有个服务器也就是VPS,我这里介绍一个最简单的方法就是用 DigitalOcean(此链接赠送$100美刀优惠券) 的服务器,每个月的成本是 5$

搭建Algo 梯子服务器

虽然Algo提供在不同的云服务器上不同搭建方法, 比如 DigitalOcean , Amazon EC2, Microsoft Azure. 下面我简单介绍怎么在 DigitalOcean 上搭建:

  1. 首先在 DigitalOcean 上注册一个帐号.
  2. 下载Algo. 把下载的压缩包解压.
  3. 安装 Algo 的依赖包. 打开你的终端. 你至少需要安装 python. 然后 cd 进入 algo-master 这个解压得到的文件夹 , 然后在终端中运行:
    • macOS:$ python -m ensurepip --user $ python -m pip install --user --upgrade virtualenv
    • Linux (deb-based):$ sudo apt-get update && sudo apt-get install \ build-essential \ libssl-dev \ libffi-dev \ python-dev \ python-pip \ python-setuptools \ python-virtualenv -y
    • Linux (rpm-based): See the Pre-Install Documentation for RedHat/CentOS 6.x
    • Windows: See the Windows documentation
  4. 安装 Algo 剩下的依赖包. 在同一个终端下运行: $ python -m virtualenv env && source env/bin/activate && python -m pip install -U pip && python -m pip install -r requirements.txt 在macOS上,可能需要安装cc。 直接按确定,会自动安装的。
  5. 设置用户. 在 config.cfg 这个文件里设置用户. 如果没用特定的设置,将会自动生成两个默认用户名。
  6. 开始搭建. 在 Algo 这个文件夹里,运行./algo 就可以开始自动搭建梯子服务器了。
    • 这里需要选择云服务器的位置, DigitalOcean 提供全球不同区域的服务器, 如果你主要在国内使用, 建议选择新加坡或者印度班加罗尔的数据中心. 对比在国内访问 DigitalOcean 不同区域服务器的网速.
    • 选择服务器
    • 第二步需要在 DigitalOcean 的获得一个API token.这个token可以在DigitalOcean的 settings/api 里生成。
    • 选择服务器位置

后面几步直接按确定接受默认选项就行了。如果想做更高级的配置这里有更详细的解释 deploy-from-ansible.md

好了!如果没有出现问题的话,你就能得到自己的梯子了。最近一次测试,我发现在自动搭建过程中可能出现以下错误:

TASK [cloud-digitalocean : Tag the droplet] ************************************
failed: [localhost] (item=staging) => {"failed": true, "item": "staging", "msg": "error tagging resource '73204383': param is missing or the value is empty: resources"}
failed: [localhost] (item=dbserver) => {"failed": true, "item": "dbserver", "msg": "error tagging resource '73204383': param is missing or the value is empty: resources"}
Debugger invoked
(debug) c
...
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Failed as requested from task"}

解决方法如下,将下面的代码保存在一个文件中do_tag.patch, 然后运行 patch -b -p0 < do_tag.patch

--- ./env/lib/python2.7/site-packages/ansible/modules/core/cloud/digital_ocean/digital_ocean_tag.py.orig	2017-12-02 09:42:56.044524930 -0500
+++ ./env/lib/python2.7/site-packages/ansible/modules/core/cloud/digital_ocean/digital_ocean_tag.py	2017-12-02 09:43:14.245074861 -0500
@@ -242,7 +242,7 @@
     module = AnsibleModule(
         argument_spec=dict(
             name=dict(type='str', required=True),
-            resource_id=dict(aliases=['droplet_id'], type='int'),
+            resource_id=dict(aliases=['droplet_id'], type='str'),
             resource_type=dict(choices=['droplet'], default='droplet'),
             state=dict(choices=['present', 'absent'], default='present'),
             api_token=dict(aliases=['API_TOKEN'], no_log=True),

如果没有错误,会得到以下信息,然后记下 p12 (user certificate) 的密码,之后需要用到。

        "\"#----------------------------------------------------------------------#\"",
        "\"#                          Congratulations!                            #\"",
        "\"#                     Your Algo server is running.                     #\"",
        "\"#    Config files and certificates are in the ./configs/ directory.    #\"",
        "\"#              Go to https://whoer.net/ after connecting               #\"",
        "\"#        and ensure that all your traffic passes through the V(P)N.      #\"",
        "\"#                    Local DNS resolver 172.16.0.1                     #\"",
        "\"#                The p12 and SSH keys password is XXXXXXXX             #\"",
        "\"#----------------------------------------------------------------------#\"",

V(P)N的使用

你需要用在 configs 这个文件夹里的文件来设置手机或者电脑上的梯子. 所有的文件都会自动生成在以 Algo 服务器的 IP 地址命名的文件夹里。 如果不知道怎么用这些配置文件,这里有更详细的解释。 因为这里文章里已经讲得很清楚了,我就不翻译了。