HTTP代理協議 HTTP/1.1的CONNECT方法

我們平時使用HTTP協議無非就是GET、POST這些方法,但是HTTP的內容遠不止那些。今天就來說說HTTP代理使用的CONNECT。這個不是在網頁開發上用的,如果沒興趣就跳過吧。
  APACHE只是作爲網頁的服務器被使用的,不會支持這個方法。如果要使用它必須在服務器上安裝相應的軟件。這樣的軟件很多,百度一下HTTP代理服務器就可以找到一大把。
  CONNECT這個方法的作用就是把服務器作爲跳板,讓服務器代替用戶去訪問其它網頁,之後把數據原原本本的返回給用戶。這樣用戶就可以訪問到一些只有服務器上才能訪問到的網站了,這就是HTTP代理。說到代理,我想各位在黨的旗幟下成長的同學都不會陌生吧。我們使用的網絡被稱爲天朝局域網,它離Internet還有很長的一段路要走。所以,我們就必須越過重重坎坷去摸一摸這個世界本來的樣子。哎呀,不小心又扯了一下蛋。下面來說說這個CONNECT方法的用法。
  CONNECT方法是需要使用TCP直接去連接的,所以不適合在網頁開發中使用,不過網頁開發中也用不到這玩意兒。要是使用CONNECT方法,首先要讓服務器監聽一個端口來接收CONNECT方法的請求。這個是服務器軟件做的事情,我們只要配置好它就可以了,除非你閒着無聊想自己實現一個這樣的服務器。在服務器監聽了端口以後就是客戶端的請求,我們必須告訴代理服務器我們想要訪問哪個Internet服務器。假如我想通過代理訪問這個博客(www.web-tinker.com),我就需要建立一個TCP連接,連接到服務器監聽的那個端口,然後給服務器發送一個HTTP頭。下面就是這個HTTP頭的內容:CONNECT www.web-tinker.com:80 HTTP/1.1
Host: www.web-tinker.com:80
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic *
Content-Length: 0

  所有的HTTP頭都是類似的,第一行是方法名、主要參數、HTTP版本。接着一行一個參數,最後用兩個換行來結束。這個HTTP頭其實也沒什麼好介紹的,唯一一個重點的地方就是星號的部分,這個地方應該填寫驗證的用戶名和密碼。而且,用戶名和密碼也是有固定格式的。要把用戶名和密碼用冒號連接起來,再經過BASE64的編碼後纔可以使用。假如用戶名是abc密碼是123,那麼星號的地方就應該換上YWJjOjEyMw==,也就是abc:123經過BASE64編碼的結果。
  發送完這個請求之後,就是服務器端響應請求了。如果用戶名和密碼驗證通過,就會返回一個狀態碼爲200的響應信息。雖然狀態碼是200,但是這個狀態描述不是OK,而是Connection Established。HTTP/1.1 200 Connection Established

  如果用戶名和密碼驗證不通過。會返回一個407的狀態碼,狀態表述是Unauthorized。表示沒有權限訪問代理服務器。HTTP/1.1 407 Unauthorized

  驗證失敗的情況有時候還會帶上一堆HTML,這是有些服務器爲了讓網頁上在連接失敗是顯示用的,如果不是通過瀏覽器來連接的話無視就好了。無論驗證成功還是驗證失敗,這些服務器返回的信息在不同的服務器軟件上會有一些差異。比如有些服務器軟件返回這些代碼會使用HTTP/1.0,有些則會在後面加上個代表服務器版本的字段。這些信息都無所謂,對於服務器返回的數據,我們關鍵是看狀態碼。
  驗證通過之後,我們就可以做普通的HTTP操作了。完全可以把現在的代理服務器看作是請求連接的Internet服務器,也就是說可以像直接訪問普通的服務器一樣,使用GET、POST等方法來請求Internet服務器上的頁面了。我們在發送CONNECT請求的時候就已經告訴了服務器我們需要訪問的Internet服務器,上面我用了這個博客的網址。現在我們要訪問這個博客的主頁就可以發送一個簡單的GET請求。GET / HTTP/1.1
Host: www.web-tinker.com
Content-Length: 0

  這個就是普通的GET請求的操作了,我就不多說了,這樣CONNECT方法的操作就完成了。假如哪天這個博客被牆了,就可以通過這個方式來訪問。但是道高一尺魔高一丈,天朝的和諧技術已經不僅僅在與IP屏蔽上了。如果使用HTTP代理訪問youtube這種超級和諧的網站就會被攔截下來,畢竟HTTP是明文傳輸的,不僅是域名,只要網站中有和諧字眼的都會被攔截。所以,這個HTTP代理只能訪問一些被屏蔽了IP,但是沒有被和諧的太嚴重的網站。如果需要逃過天朝的網絡監視就必須使用加密的連接方式,比如SOCK5代理或者加密的VPN。總之,注意和諧吧。
發佈了102 篇原創文章 · 獲贊 27 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章