[原]隧道Proxy原理详解(基于Node.js)

写这篇文章的目的在于很多用我的代理的童鞋都喜欢问我到底为什么,为了避免机械化的每一次都重复为什么我决定把原理写出来给大家分享一下。

      同样来自武汉的Vincent Ting童鞋问我还有不基于代理的"FQ"方式么,VPN一样的..我说,VPN本质来说不也是代理技术么?..就目前来说我遇到的都是基于代理的方式,不基于代理的方式"不科学"吧..如果你知道请和我分享。

      作为一个围城内的人,大家都有一颗走向世界的心,无奈现实太多阻碍。作为一个搞IT的同学,不会FQ说出去不怕被别人笑话么?

      会FQ不一定知道原理,今天给大家介绍一下基于隧道技术的HTTP代理。(今天吃火锅回来,话特别多)

      说到HTTP代理,在设置浏览器的本地代理时候会修改系统注册表项,修改后系统凡是HTTP/HTTPS协议都会把转发扔到设置的代理的对应端口。好了,那么切入点就在这里了,我们只需要监听一个本地端口,让系统把所有的请求全部转发到此端口,那么我们就可以获取所有的HTTP请求了,得到此请求我们需要将请求加密后传输到服务端,服务端解析得到原始HTTP后转发到真正的服务器,返回的时候也是一样的原理。同事问我这个是HTTP代理还是socket代理,我自己都不太说得清,杂交品种。

千言万语不如一张图:

好的,其实原理挺简单的,关键是如何做。这里使用的加密技术很简单,就是最普通的异或加密,刚开始是取反被同事喷了。

本代理全程使用Node.js,目的是为了熟悉Node.js才做的,我也是新手,若喷请狂喷,谢谢。

话说和LDC同学一起买的VPS我一直没请他吃肯德基这货就离职了。(VPS在美国,E4200,512M,20G的服务器,1T/Month 流量)

监听本地端口很简单,关键的是我们不能把代码做成同步的,那样太低效太没面子了,说出去都不好意思。所以用到异步的,那么最先想到的就是Node.js(这里要感谢我牛逼的学长Jianru-Lin),看他这么火我们也来牛逼一把。思前想后我还是不想把代码公开,毕竟这个不是太好...对不住了

给大家看看“FQ”效果(注明:狗急跳墙是一个的壳,封装的Node启动进程,为了方便使用)

 

服务端:

 

客户端:

希望想交流的同学我们单独私下交流

posted @ 2013-03-31 21:48  _Boz  阅读(6623)  评论(8编辑  收藏  举报
4AI?Z:cp1z?_RJQle1]Gs;P!T)RHroW|