懒人福音:包学包会的简易科学上网指南

2016 年 12 月 26 日更新:

  • 由于下文介绍的科学上网服务不支持 SSR,且我对科学上网速度的要求越来越高,所以选择了其他更加靠谱、网速更快的、支持 SSR 的科学上网服务。广东电信用户感兴趣的话,可以在评论区留下邮箱,我发邮件邀请你(对于其他地区的宽带用户,无法保证速度)。
  • 虽然不推荐使用下文的科学上网服务了,但还是强烈推荐使用 MEOW 作为科学上网软件。
  • 修改 macOS 和 Linux 下的命令行代理配置方式。

2017 年 1 月 23 日更新:

  • 昨日工信部严令禁止私人架设并使用 VPN 的通告一出,几乎可以正式宣告 VPN 科学上网方式彻底退出历史舞台。
  • 昨日除了 VPN 业务受阻,很多提供 Shadowsocks 科学上网方式的小型服务商都受到了或多或少的影响。鉴于我使用的服务也受到了影响,而之前推荐的 shadowsocks.com 的服务挺稳定的,遂推荐:对于 YouTube 高清视频没有强烈需求的小伙伴,入手 shadowsocks.com 基础版。
  • 找到更好的科学上网服务商的话,我会第一时间在这里更新。Tune in!
  • 修改“针对不同人群的科学上网小贴士”部分内容。
  • BTW,最近 Shadowsocks 官方在进行 obfs 的开发工作,进展顺利的话,将会是对 GFW 的一次回击。敬请期待吧!

前言

科学上网,也就是 Fān Qiáng 的“文艺”说法。由于众所周知的原因,容易误伤或被查水表,所以本文统一叫法为“科学上网”。

TL;DR

结合自己一年多呕心沥血总结出来的科学上网经验,文章比较长,先来个概述。本文主要内容如下:

  • 推介一项稳定好用的付费科学上网服务;
  • 介绍一款稳定好用的基于白名单能实现智能分流的开源电脑端科学上网软件 MEOW
  • 福利彩蛋:
    • 命令行代理配置及开发环境配置;
    • 简单讲解移动设备的科学上网方法;
    • 介绍两个免费的电脑端科学上网方案(仅限急用);
    • 针对不同人群提供不一样的科学上网小贴士。
  • 简单总结

本文跟那些妖艳贱货很不一样

  • 文末提供所有提及的软件的下载通道,以免你走入“先有鸡还是先有蛋”的尴尬死循环;
  • 手把手“教学”,包学包会;
  • 基于自己作为前端工程师一年的科学上网经验,向不同的群体提供不一样的科学上网小贴士。

前情提要

为了你能顺畅理解下面的内容,建议先阅读我之前写的另一篇介绍科学上网的博文里“Shadowsocks Fān Qiáng 教程”以上的部分。

正文

根据上面“前情提要”,目前基于 Shadowsocks 的科学上网服务是最靠谱的。业内提供 Shadowsocks 科学上网服务的小商家很多,被封掉的也很多。

一项稳定好用的付费科学上网服务

对,我推荐的科学上网服务是 https://shadowsocks.com 这个网站提供的,支持支付宝付款。使用这个服务一年有余,除了去年国庆节那天由于某些你懂的原因出现了短暂的“故障”,其余时间都很稳定。

前提:我的宽带是中国电信 100M 光纤。如果你的宽带本身就不稳定,那就别怪科学上网服务不稳定啦。

提示:shadowsocks.com 是一个商业网站,提供基于 Shadowsocks 的科学上网服务;shadowsock.org 才是 Shadowsocks 开源项目的官网。

个人猜测:也由此可见,能抢注 shadowsocks.com 这个域名,应该也是一个老牌科学上网提供商了吧。

教你购买

由于这个网站的购买流程实在设计得很不合理,这里有必要教各位如何购买:

点击上面任意一个网址,进入网站后,点击“订购服务”:

订购页面

进入到“选购服务”页面。由于不限流量,个人使用的话,选择“Shadowsocks.com 普通版”即可,大约是 105 元/年。点击“现在订购”:

现在订购

提示:可以多设备使用。但是,强烈谴责一个账号多人使用、疯狂 BT 下载等行为。

下面跳转到“配置”页面,直接点击蓝色的“继续”按钮:

配置页面

接下来是“支付结账”页面,直接点击绿色的“结账”按钮:

支付结账页面

下面进入“结账”页面,填写相关的信息注册账号(之前注册过的话,点击右上角青色的“已有账号?”按钮)。“个人信息”栏、“账户安全”栏是必填的;支付方式选择“Alipay 支付宝国际版”;勾选“我已经阅读并同意该服务条款”;接着点击蓝色的“完成订购”按钮:

结账页面

接下来会跳转到“账单支付”页面,如图所示,点击右上角的“使用支付宝支付”并完成付款。支付成功后,即可使用 Shadowsocks 科学上网服务:

账单支付页面

教你使用
  1. 打开 https://portal.shadowsocks.com,点击右上方的“账号管理” - “客户登录
  2. 填写上面购买服务时填写的邮箱密码,进行登录;
  3. 进入“欢迎”页面,点击“产品服务”,如图:

    欢迎页面里的产品服务

  4. 进入“我的产品与服务”页面,点击绿色按钮“有效的”所在那一行,即可进入刚刚购买的服务的“管理产品”页面:

    我的产品与服务页面

  5. 在“管理产品”页面里,“服务端口”、“登录密码”、“加密方式”、“节点服务器地址”等信息,构成了你的 Shadowsocks 服务账号信息,用于远程 Shadowsocks 服务器登录验证。最右边的“二维码”是该节点服务器的登录信息,方便使用手机版 Shadowsocks 软件扫描该二维码,快速将该节点服务器加入到服务器列表中(手机版科学上网软件,下文会有介绍):

    管理产品页面

建议把“管理产品”页面添加到浏览器收藏夹,方便下次快速访问。

正常情况下,香港、日本的服务器延时(ping 值)在 100ms 以内。

YouTube 测速结果

下图是在 YouTube 看一个 1080P 全高清视频的测速结果:

YouTube 全高清视频测试结果

简单说明:图中可以看到,看 1080P 全高清视频时,YouTube 连接速度在 7 兆带宽(高峰时段一般是 5 兆带宽),可以看 1080P 全高清视频,但并不是点哪里就立即播哪里,需要 10 秒左右的缓冲时间(可以流畅观看 720P 高清视频)。

一款基于白名单的能实现智能分流的开源电脑端科学上网软件

对于科学上网软件,之前我一直在使用 Shadowsocks 官方开源的 Windows 版本,这个项目一直有志愿者在维护,稳定。可是使用时间久了,就发现了不少缺点:

  • 作为前端开发者,需要使用 NPM,但是 NPM packages 基本都开源在 GitHub,而 GitHub 的访问速度很慢(并没有被墙),而 GitHub 的静态资源都存储在亚马逊的 AWS 云服务器(被墙),所以下载 GitHub 上的开源代码很慢、几乎无法下载 GitHub 上的代码压缩包或者项目编译后的版本包;
  • 作为前端开发者,CNPM v4 在 Windows 上的兼容性不好,时不时会遇到一些莫名其妙的问题;
  • 大部分国外网站访问速度都很慢。

所有缺点,归根结底,在于 Shadowsocks 使用的是黑名单 PAC。

黑名单与白名单

所谓黑名单,是指将“需要科学上网”的网址(域名)都记录在一个文件里,这个文件就是一份黑名单。科学上网软件通过判断将要访问的网址是否在黑名单里。该网站在黑名单里的话,就通过科学上网来访问该网址;不在的话,就不通过科学上网,直接连接。而白名单则相反。

可见,黑名单模式最大的弊端在于:要一直维护这份黑名单,否则哪天某个网站被墙了,而黑名单没有及时更新,就无法访问该网站了。

MEOW 的杀手锏

除了 Shadowsocks,还有一个名为 COW 的项目也是大名鼎鼎,为什么也不用 COW 呢?其实 MEOW 是 COW 的一个 Fork 分支,它在 COW 的基础上,提供了智能分流的功能。

所谓智能分流,就是 MEOW 会自动判断哪些网址是中国大陆的网址,哪些是国外网址。对于大陆的网址,采用直接连接,不通过 MEOW 和 Shadowsocks 服务,以保证国内网站的打开速度;对于国外网址,通过 MEOW 和 Shadowsocks 服务。

所以,MEOW 最大的好处是能节省科学上网服务的流量的同时,为访问国外网站“加速”。

个人认为,能通过判断 IP 地址所在地来决定是否使用智能分流,才是一个科学上网软件优秀与否的评判标准。MEOW 做到了,并为我节省了很多宝贵时间。此处向 MEOW 的开发者 renzhn 致敬!同时向 COW 的贡献者们致敬!

科普:为何智能分流能加速访问国外网站?

首先,为了能实现科学上网,科学上网服务的服务器都部署在中国大陆以外的各个地区(除非你是出国党想要翻回中国大陆),有香港、日本、新加坡、美国等……这些服务器扮演的角色是:我们的电子设备与目标网站的中间者。

  • 假如我们访问国内的网站,需要先经过位于国外的科学上网的服务器,再来到国内的目标网站,相当于兜了一个大圈,肯定很慢;
  • 假如我们要访问国外的网站(由于 GFW 的原因,本来很慢),先经过科学上网服务的服务器(中间者),让不在 GFW 管辖范围内的这些中间者服务器将目标网站的内容快速地加载出来,然后直接传给我们的电子设备。这个过程虽然增加了中间者的角色,连接目标网站的时间要长一点,但是访问的速度加快了,整体而言也就是访问国外网站“加速”了。

MEOW 配合 Shadowsocks 服务的使用方法

MEOW 在 GitHub 的项目地址:https://github.com/renzhn/MEOW。聪明的孩子可以自己按照说明文档来安装喔。

Windows 用户

MEOW 下载地址:

  • 32 位系统:MEOW-x86-1.3.5.zip
  • 64 位系统:MEOW-x64-1.3.5.zip
  • 这是我已经配置好的 MEOW 32 位(只需要修改压缩包内的 rc.txt 文件):百度网盘下载

    如果不知道自己的 Windows 系统是 32 位还是 64 位,那就下载 32 位的。

打开下载好的压缩包,可以看到包含这么几个文件:

MEOW 文件夹里的文件

  • rc.txtrc-full.txt 都是 MEOW 的配置文件(以 rc.txt 命名的文件,才是真正起作用的配置文件。rc-full.txt 是带有详细描述的备份配置文件,用于理解各项配置的含义,需要重命名为 rc.txt,该配置文件才能起作用。);
  • MEOW.exe 是运行文件,双击它即可运行 MEOW;
  • direct.txt不使用 MEOW 的网址列表
  • proxy.txt使用 MEOW 的网址列表
  • reject.txt拒绝访问的网址列表,包含主流的用户数据追踪网站(例如友盟)、手机广告投放网站。

    放在 reject.txt 里的网站都是无法访问的。如果平时需要使用友盟(umeng.com)的服务,请务必把 reject.txt 里的 umeng.comumeng.co 删掉,保存,重新载入 MEOW。

设置
  1. 删掉 rc.txt 文件;
  2. rc-full.txt 文件重命名为 rc.txt(也就是说,这里使用带有详细使用说明的 rc-full.txt 文件的内容作为 MEOW 的配置);
  3. 用记事本或代码编辑器打开 rc.txt 文件。将下图中这几行的井号(#)去掉,使其生效:

    配置 MEOW (1)

    • listen = http://0.0.0.0:4411 意思是在本局域网内(同一个路由器或 WiFi 所在的网络)提供一个端口号为 4411 的 HTTP 代理;
    • judgeByIP = true 就是通过 IP 地址判断是否直连,这个配置开启了智能分流功能;
    • loadBalance = latency 是用于配合下面的 Shadowsocks 科学上网服务的。latency 意为优先选择连接延迟最低的 Shadowsocks 二级代理
  4. 打开 https://portal.shadowsocks.com,登录自己的账号。对应着 Shadowsocks 科学上网服务账号里的信息,替换下面的 proxy 设置:

    配置 MEOW (2)

    例如修改为:proxy = ss://aes-256-cfb:iloveyou@xxx.yy.com:43123。账号中有九个服务器,MEOW 的配置文件中就填写九个,如上图所示。

  5. 双击运行 MEOW.exe。这时任务栏就会出现 MEOW 的图标。右键单击图标,选择“设置 IE 代理” - “ http://127.0.0.1:4411/pac ” :

MEOW 右键菜单设置

只要 MEOW 配置文件中的代理服务器数量大于 1,上面设置的 loadBalance = latency 这句配置就会起作用。此时 MEOW 会隔一段时间检查一下配置文件中所有服务器的连接情况,自动选择延时最短的服务器进行连接。

macOS 和 Linux 用户
下载

macOS 和 Linux 系统,请使用 Terminal 终端工具或 Bash 命令行工具。在用户主目录下,执行下面命令:curl -L git.io/meowproxy | bash

macOS 用户请使用系统自带的搜索功能,输入“Terminal”即可找到 Terminal 终端工具,输入上面的命令后,按回车,即可执行该命令。

可以输入 cd ~,回车,回到用户主目录。

下载 MEOW 期间,会问是否要将 MEOW 添加到开机自启动,输入 Y(是),回车。

设置

完成后,MEOW 可执行文件就会在用户主目录下,同时还有一个 .meow 隐藏文件夹,里面的文件与 Windows 版的一一对应:

  • direct
  • proxy
  • reject
  • rc
  • rc-full

配置文件 rc 的内容跟 Windows 版本的也完全一致。

小贴士:由于 .meow 文件夹是隐藏的,只有在 Terminal 或者 Bash 命令行工具下通过 ls 命令才能看到。编辑 rc 配置文件可以这样:vi ~/.meow/rc 编辑 rc 配置文件,按字母 i 进入 vi 编辑器的编辑模式。配置语句参考 Windows 版配置文件。编辑完成后,按:wq保存退出。

  1. 编辑完配置文件后,执行命令 ./MEOW & 在后台静默启动 MEOW;
  2. 此时进入 macOS 的“网络偏好设置”,点右下角的“高级...”,在弹出的页面中选中“代理”标签页,勾选“自动代理配置”;
  3. 右边 “URL” 中填写 http://0.0.0.0:4411/pac
  4. 此时可以打开谷歌首页 http://www.google.com,测试是否能成功科学上网啦!

福利彩蛋

我把文章提到的所有科学上网软件都上传到我的百度云盘了,免得你们进入“先有鸡还是先有蛋”的死循环。其中只有 MEOW 是我配置好的,其余都是官方原版,未经修改。不放心的话,可以到 GitHub 下载。

下载地址:http://pan.baidu.com/s/1b4RCeE

命令行代理配置及开发环境配置
命令行代理配置

MEOW 启动之后,只有浏览器能科学上网。如果开发者希望在命令行提示符或者终端中也能科学上网,如何设置?看这里:

Windows 新建系统环境变量

  • Windows 用户打开系统环境变量,点击“新建”,依次添加以下两条环境变量,重启电脑后生效:
    • HTTP_PROXY http://127.0.0.1:4411
    • HTTPS_PROXY http://127.0.0.1:4411
  • macOS 和 Linux 用户,在终端或命令行中依次执行以下命令,重新加载命令行或终端后生效:

    • vi ~/.bash_profile(使用 bash 的用户请执行这条命令,默认是 bash
    • vi ~/.zsh_profile (使用 zsh 的用户请执行这条命令)
    • 在文件最后加入以下两句命令(保存,重启终端后生效):

    export http_proxy="http://127.0.0.1:4411"

    export https_proxy="http://127.0.0.1:4411"

此时,除了 ping 等 Windows 系统自带命令,其余一切 CLI 命令均使用了 MEOW 的 HTTP 代理,从而实现智能分流,加速下载。此方法只对当前系统用户有效,其余用户需要按照步骤重新设置。

开发环境配置

MEOW 启动之后,就在本局域网的 4411 端口上开启了一个 HTTP 代理。所有支持 HTTP 代理的开发软件都可以配置 IP 地址 0.0.0.0 和端口 4411 使用 HTTP 代理,从而使用 MEOW 的智能分流功能加速下载。

  • 对于前端 NPM:
    • 因为会智能分流,配合淘宝的 CNPM 镜像才是最快的:npm config set registry=https://registry.npm.taobao.org
    • 让 NPM Packages 的安装过程变得可视化:npm config set loglevel=http
    • 安装失败后,最好先清除 NPM 的缓存文件,强制删除 node_modules 文件夹,再重新安装:npm cache cleanrm -rf node_modules
    • 最重要:Windows 下编译 Node 的 C++ 模块终于不需要安装 Visual Studio 这个大块头了:npm install --global --production windows-build-tools;这个项目的地址:windows-build-tools
    • 上面这个命令跑完之后,可以尝试安装 gulp-image 这个 Package 测试一下是否成功:npm install gulp-image
    • 如果你使用 macOS,可以尝试使用 cnpm v4:npm install -g cnpm。cnpm v4 采用跟 npm 完全不一样的实现方式,超快。但在 Windows 下暂时有莫名其妙的坑,请勿在 Windows 平台下使用。
    • 也可以尝试使用 Facebook 开源的 Yarn 包管理器,以取代 npm
  • 对于 PHP 后端:
    • 请使用国内的 Composer 全量镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com
  • 对于 Ruby 后端:
    • 请使用国内的 Ruby Gem 全量镜像:gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
  • 对于 Android 开发者:
    • 给 Android Studio 设置 HTTP 代理:http://127.0.0.1:4411
  • 对于后端运维:
    • Docker for Windows 和 Docker for Mac:可在 Docker Daemon 可视化界面下配置 HTTP 代理:http://127.0.0.1:4411
    • Docker for Linux:可参照阿里云 Docker 镜像仓库加速器指南进行配置
    • Linux 运维:可使用 MEOW Linux 版本,配合 Shadowsocks 服务实现生产服务器科学上网
  • 通用用法:反正可以设置 HTTP 代理的开发软件,都可以尝试设置 HTTP 代理以实现下载加速:http://127.0.0.1:4411

温馨提示:这两种设置方法相当于为命令行交互界面(CLI)下的所有命令都设置了代理。以后运行命令前,必须保证 MEOW 代理正常运行,需要网络支持的命令才能正常执行。

移动设备科学上网方法
  • Android 用户请使用 Shadowsocks 安卓版
  • iOS 用户:
    • 在 App Store 搜索 Wingy(免费)或 Shadowrocket(¥6)或Potatso(¥45)
    • 不推荐免费的 VPN,一是应该已经被封杀得差不多了,二是可能会有隐私泄露问题,自行判断,在此不赘述。
两个免费的电脑端科学上网方案(仅限急用和低频使用)
  • 另一个大名鼎鼎的科学上网软件 Lantern(蓝灯),可是最新版本变成每月仅限使用 800M 流量;无限流量需要付费;

    下载地址:https://github.com/getlantern/forum/issues/833

    项目地址:https://github.com/getlantern/lantern

    Lantern 的实现方式跟 Shadowsocks 不一样,挺稳定的。图方便的话,可以购买付费流量。但目前(2017 年 1 月 23 日)为止,还不支持 iOS。

  • 一个提供免费 Shadowsocks 账号的网站:ishadowsocks.mobi,每六小时变更一次密码。可以配合 MEOW 软件来使用。

针对不同人群的科学上网小贴士
只需要浏览网页

建议使用 Lantern,需要科学上网时才打开,不用就退出。800M/月的流量应该够用。也可以直接购买 Lantern 的付费流量,配合 Lantern 客户端使用,非常方便,但目前还不支持 iOS。

喜欢科学上网看视频

正在寻找最佳解决方案……(一般而言,Shadowsocks 各服务商写着服务器使用 CN2 等专线的,都可以流畅看 YouTube 1080P 视频,但是一般需要手动切换清晰度到 1080P 才会播放 1080P 的视频。这个问题是服务器的网络延时较高和突发访问速度不足导致的。所以说,我正在寻找更完美的方案。)

喜欢科学上网玩国外游戏

正在寻找最佳解决方案……(想要流畅玩游戏的话,既需要延时低,还要网速高。提供这种高质量服务的还是比较少的,一般费用都在 300RMB/年以上。另外,听说某些育碧的游戏必须使用 VPN 或者在路由器安装 Shadowsocks 才能走国外线路。)

喜欢逛 Twitter、Instagram 的 android 和 iOS 用户

建议购买 Shadowsocks.com 普通版

开发者

建议购买 Shadowsocks.com 普通版或以上

总结

  • MEOW 是一款支持 Windows、macOS、Linux 的科学上网软件,基于白名单,提供智能分流功能。正常运行后,在本机(127.0.0.1)或本局域网(0.0.0.0)的 4411 端口提供一个 HTTP 二级代理;
  • Shadowsocks.com 是一项提供科学上网的服务;购买账号后,需要配合科学上网软件来使用,例如 MEOW;
  • 开发者可以通过添加环境变量的方式,使得 CLI 命令都走 MEOW 的 HTTP 代理,实现智能分流,加速下载(根据 IP 地址所在地进行智能分流,对前端开发者经常使用的 NPM 加速尤为明显);
  • 可以给支持 HTTP 代理的软件设置 MEOW 的代理 127.0.0.1:4411,从而加速下载;
  • 科学上网的开源项目还有不少,Lantern 是其中优秀的代表;
  • 我把用到的科学上网软件放到百度云盘了,自行取用:http://pan.baidu.com/s/1b4RCeE

最后

  • 更多干货,欢迎关注我的博客 前端养成记 - loyalsoldier.me
  • 关于购买 Shadowsocks 服务、自建 Shadowsocks 服务器等问题,请在评论区留下联系方式,欢迎付费咨询与搭建。

Loyalsoldier

死飞,设计,编码,音乐……美物都值得善待。