[原]隧道Proxy原理詳解(基於Node.js)


寫這篇文章的目的在於很多用我的代理的童鞋都喜歡問我到底為什么,為了避免機械化的每一次都重復為什么我決定把原理寫出來給大家分享一下。

      同樣來自武漢的Vincent Ting童鞋問我還有不基於代理的"FQ"方式么,VPN一樣的..我說,VPN本質來說不也是代理技術么?..就目前來說我遇到的都是基於代理的方式,不基於代理的方式"不科學"吧..如果你知道請和我分享。

      作為一個圍城內的人,大家都有一顆走向世界的心,無奈現實太多阻礙。作為一個搞IT的同學,不會翻牆說出去不怕被別人笑話么?

      會翻牆不一定知道原理,今天給大家介紹一下基於隧道技術的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啟動進程,為了方便使用)

 

服務端:

 

客戶端:

希望想交流的同學我們單獨私下交流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM