免费爬墙网站项目(ShadowSocksShare)开发简记

  今年(2017)年暑假,我本科刚刚毕业,保研到本校读研。这个暑假,跟同实验室的师兄聊天的时候聊到爬虫,起了一点兴趣,并做了一个小项目玩了玩,并从某些网站爬到了一些漫画看。同样是这个夏天,本来我的首席上谷歌方法(Hosts)失效了,迫使我到处寻找其他免费、不限量科学上网方法,最终选定使用SSR。

  最开始,我写了一个Python脚本,使用qrcode库,可以将网上爬到的ss帐号变成二维码,这样就不需要手动输入服务器信息了,真的很方便。可是好东西只有我自己用,心里过意不去,便想了好多方法来分享我找到的帐号,以便大家都能顺利地访问谷歌。最开始打算用微信公众号自动分享,或者用微信小程序。在一个周末,我便申请了微信开发平台,创建了一个微信公众号。看官方教程发现微信小程序需要用到javascript,而使用微信公众号自动发布新爬到的ss帐号需要web服务器。后来一想,既然js和web我都不会,那我还是学着做一个网站比较好,不必依托于微信。

  说到做到,在某个周日下午,我阅读Flask文档和W3CSchools的HTML教程,以及网上Flask的例子,做出了本项目的最初版本。后来,为了寻找免费服务器托管我的项目,我先后找到了OpenShift和Heroku,并学习了一下两家服务器的使用管理方法,将网站托管到了OpenShift,加入了许多其他网站(因为最初的那个网站加入了反爬措施,我暂时不想用太多精力处理反爬)。为了处理一些难以定位的Bug,和一些莫名其妙的异常,我使用了大量try(当然这并不是一个良好的方案)和logging输出日志,通过阅读日志定位并解决掉了服务器稳定性的问题。当访问量增加,我又学着用了一下多线程threading和并发爬取数据multiprocessing,重构代码,以及最后稍微学习了一点点shadowsocks的源码。

  看到自己GitHub加星我心里很是高兴,毕竟是第一个比较受关注的项目;网站上加了个捐款链接也只是放着玩,没想到还真有不少人捐款,哈哈:)知道有这么多人使用我的小项目,我也使用了大量时间进行维护、改Bug、增加功能、改进UI。收获是对html和javascript熟悉了不少,后来做数据分析需要调用百度地图API之类的就比较轻松了:)建站的时候也有了不少收获,理解了用户、性能、运维、ssl、CDN、代码风格、项目的文件安排等等需要实践才能有所理解的概念,有了一个从0到1的过程。

  现在本项目比较完善了,以后不会需要太多维护,主要精力也将放在学习和科研上。当然,如果筹集到足够多的捐款,我也会尝试着用捐款搭梯子回馈大家:)

此博客中的热门博文

Ubuntu Gnome 酷炫完整指南(一):小工具篇