使用heroku+shadowsocks-heroku进行科学上网

Heroku是标准的Paas服务,我们的程序可以很简单的部署到Heroku上,开发者只需要使用Git将项目Push到Heroku的Git服务器上即可,git push会自动触发安装、配置和部署程序

预备工作

  • heroku官网注册heroku账号
  • 安装相应操作系统的Heroku客户端,这里是地址
  • 安装后通过命令行登陆Heroku

    heroku login

第一次使用上述命令的时候可能还需要安装,安装完毕之后可能会没有反映(正常的话应该会弹出email选项让你输入),可以先不管它,重新打开一个命令行界面(我用windows就出现了这种情况),输入"heroku login"即可

  • 通过命令行登陆后,可以通过命令行或者网页创建app,通过网页的方式比较简单,输入app名字后直接点击Create App,使用命令的话如下

    heroku create kxswforme kxswforme是你的app名字

关于heroku的配置,就到这里了


安装和配置shadowsocks-heroku

  • 从github下载shadowsocks-heroku的zip压缩包
  • 在本地某个目录指定一个文件夹(比如我使用的是G:\kxswforme),解压下载的zip文件将全部文件拷贝到指定根目录(我这里是G:\kxswforme
  • 修改config.json配置文件,修改server和remote_port如下

    "server": "0.0.0.0", "remote_port": 80,

  • 通过刚登陆的命令行界面,切换到放shadowsocks-heroku的目录(我的是G:\kxswforme),

初始化git仓库

git init

如果没有用过git,需要配置你的git账户

git config --global user.email xx@xx.com(这里是你的git注册邮箱)

关联远程仓库

heroku git:remote -a kxswforme (kxswforme是我创建的app名字)

再添加所有文件

git add .

添加注释

git commit -m 'test'

推送到heroku的git服务器

git push heroku master

到这里可以使用简单的方法验证,在浏览器中输入 appname.herokuapp.com(这里的appname是你的app名字),如果显示asdf.,那么就说明OK了

  • 设置一些配置

    heroku config:set METHOD=rc4 KEY=foobar

  • 安装一些node的依赖

    npm install

  • 启动ss-heroku客户端

    node local.js -s kxswforme.herokuapp.com -l 1080 -m rc4 -k foobar -r 80 (这里的keswforme是我的app名字)

如果出现

server listening at { address: '127.0.0.1', family: 'IPv4', port: 1080 }

那么就说明已经成功了


由于这时候流量走的是socks通信,如果浏览器想要能访问被墙的网站,还需要为它设置代理,推荐使用 SwitchySharp 插件,设置方式我还是简单说说吧

SwitchySharp是chrome的插件,在安装过后,右击它的图标,选择选项,然后在情景模式的proxy中设置

代理协议 -> socks5

代理服务器 -> 127.0.0.1

代理端口 -> 1080

点击应用选项保存更改,这时候就可以访问google了,这时候默认所有站点都走代理。当然你也可以设置某些站点不走代理,关于SwitchySharp的具体设置我就不详细说了,大家可以在网上很容易查阅到


这里我有几个别的想法

  • 可以把客户端脚本做成一个自启动的脚本,这样就不需要我们每次开机手动启动了

  • 我们可以使用requests等网络库通过socks5代理来调用google搜索等服务,也可以让我们的网络爬虫走这层代理(说起网络爬虫,哎,就有点惭愧,自己很早就打算写这一系列教程,却一直搁置着,拖延症啊!),而heroku提供免费50个app创建的权限,并且经过测试发现每个app的ip都不一样,所以那样子就避免了缺少代理IP的尴尬,我们从此就可以告别网上那些稳定性不够高的免费HTTP/HTTPS代理。

  • 从上面受到启发,我们可以找一些类似heroku的可免费提供Paas服务的应用和后端云,比如GAE,openshift等,由此来设置并获取一些可用的代理,或者直接把爬虫部署上去