完成度很低,暂不公开,只发放给一些天使用户测试。

免费的东西是有成本的

做代理的点子在得到网友的支持后,我就开始动手实现了。最开始,我所懂的只是大概知道,用个代理软件,就可以让其他不能上网的机器上网了,其他的可以说一窍不通。
我要做的是一个减轻用户验证频率的代理,需要对代理软件能做极大的自定义调整。一开始相中Varnish,觉得他的调整范围还是蛮大的,但是发现他是反向代理后,决定还是从完全的代理代码入手。
我从github搜索了几个基于nodejs的代理软件,在nodejs各个版本之间如此“稳定一致”的情况下,很多代码要么做修改,要么修改了也只能运行在某个特定版本下。
总算筛选出能用的代码后,摸索其中的代理实现原理也曲曲折折。http的代理基本好说,看到的实现大体是解析用户发来的request,然后新建request请求数据,把结果返回给用户。https的代理就麻烦了,竟然是同http代理一个做法,冒充了主机,这导致了CA证书的信任问题。证书这种高端的东西,是甩给用户看的吗?
还好我是有参考的,我看到别人提供的服务并没有提醒证书问题,这个问题应该有办法避免的。我又试用了其他代码,有一份代码在做https代理的时候,没有出现证书问题,原理很简单,老老实实做转发,不要冒充。
到此,代理实现原理基本摸索算完成,然后在这上面开发了简单的认证控制。

隧道是自由

以前总是通过境外ssh的动态端口模式上网,所以花20刀入了个linode,结果发现,即使我不是向facebook主机请求facebook数据,GFW仍旧会毫不犹疑的干掉连接。只好在42区再入个60块的国内VPS,用户请求先交给国内VPS,然后通过ssh隧道安全送到linode。
不得不说,这里面成本太高了,一个月成本接近200。幸运的是,在我和天使用户的一些邮件往来中,特别感谢iamtaylover,我了解到HE提供免费的隧道服务,使我得以摘掉linode的成本。即使隧道收费,费用也应该比入手linodeVPS便宜。


我学到什么

  1. 代理服务器的实现原理和细节,理所当然的。
  2. 买便宜够用的VPS。VPS的提供商和广告太多,骗子也太多。linode很贵,但是真是一分钱一分货,业务大的还是建议选linode。
  3. iptables,NAT,route,以前重来不想的,真是用到就会了

Written with StackEdit.