2011-08-23 86 views
34

我在網上搜索了一些關於http-proxy的內容。 我閱讀關於代理服務器的wiki文章。 但我仍然不明白HTTP代理如何工作,愚蠢的我。http代理如何工作?

這裏是我關於http代理如何工作的假設: 如果我將http代理設置爲特定的代理,比如說Proxy_A,那麼當我啓動Chrome/IE時,輸入特定的URL,比如URL_A chrome/IE將請求直接發送到Proxy_A, ,那麼Proxy_A將請求發送到URL_A的真實服務器?

+1

是的,大部分則Proxy_A發送響應返回給你同樣的要求。很簡單呃 –

+3

http://www.amazon.com/HTTP-Definitive-Guide-David-Gourley/dp/1565925092/ref=sr_1_1?ie=UTF8&qid=1314064943&sr=8-1有一個關於http代理的整章 – titus

+0

這個問題幾乎與計算器無關。 – unixman83

回答

45

HTTP代理講HTTP協議,它尤其適用於HTTP連接製成,但可以被濫用於其他協議,以及(這是有點兒標準已經)

瀏覽器(客戶)發送GET http://SERVER/path HTTP/1.1到PROXY
現在PROXY會將實際的請求轉發給SERVER。
服務器只會將PROXY視爲連接,並對PROXY進行響應,就像客戶端一樣。
PROXY收到響應並將其轉發回客戶端。

它是一個透明的過程,幾乎就像直接與服務器通信,所以瀏覽器實現HTTP代理只是一個小小的開銷。
還有一些額外的標頭可以發送來識別客戶端,顯示他使用的是代理服務器。
代理有時會爲了各種目的在數據流中更改/添加內容。
例如,一些代理服務器會將您的真實IP包含在特定的HTTP HEADER中,這些HTTP HEADER可以記錄在服務器端,或者在其腳本中截獲。

CLIENT <---> PROXY <---> SERVER 

更新:
與使用代理服務器的安全/隱私功能
正如你可以在上面的ASCII看到,有客戶端和服務器之間沒有直接的溝通。雙方只是與他們之間的PROXY交談。
在現代世界中,CLIENT通常是一個瀏覽器,而SERVER通常是一個Web服務器(例如Apache)。

在這樣的環境中,用戶經常相信PROXY是安全的,不會泄露他們的身份。
但是,由於在瀏覽器上運行復雜的軟件框架,有很多可能的方式破壞這個安全模型。
例如,Flash或Java小應用程序是代理連接如何被破壞的完美例子,Flash和Java都可能不太關心其父應用程序(瀏覽器)的代理設置。
另一個例子是DNS請求,它可以在沒有PROXY的情況下到達目標名稱服務器,具體取決於PROXY和應用程序設置。
另一個例子是cookies或你的瀏覽器meta腳印(resollution,響應時間,用戶代理等),如果web服務器已經知道你已經(或沒有代理再次遇到你),它們可能會識別你。

最後,代理服務器本身需要被信任,因爲它可以讀取所有經過它的數據,並且它甚至可能會破壞您的SSL安全性(在中間人看到的)

從哪裏獲得代理
代理可以作爲服務購買,掃描或只是自己運行。

公共代理
這是最常用的代理和通常的「公共」是非常容易引起誤解。
更好的詞將是「公開代理」。如果您在沒有防火牆的情況下運行代理服務器,或者世界上任何人都可以找到並濫用它。
大多數銷售代理服務器的公司只是在互聯網上掃描這些代理服務器,或者他們使用黑客入侵的Windows計算機(僵屍網絡)並將其銷售給大多數非法/垃圾郵件活動。
大多數現代國家都可以在沒有授權的情況下使用開放式代理作爲濫用,這是非常普遍的事情,但實際上可能導致監禁時間。
可以通過在互聯網上搜索開放端口來掃描代理服務器,一個典型的免費程序將是https://nmap.org
作爲一個警告詞:更大的縮放掃描幾乎肯定會讓您的互聯網連接被您的ISP禁止。

有償代理
在這裏,我們有4種類型的代理:
1)支付公共(開放)的代理
基本上,這些賣家銷售或轉售的是定期刷新,以去除死的代理人的龐大名單。
代理被大量濫用,並且通常在大多數網站(包括Google)上被列入黑名單。
另外那些代理通常非常不穩定並且很慢。
這些代理大多數都是簡單地濫用錯誤配置的服務器。 這是一個非常有競爭力的「市場」,谷歌會舉出很多例子。 2)支付被黑客(僵屍網絡)代理
這些濫用電腦,主要是物聯網或Windows桌面作爲代理主機。攻擊者大規模使用它們用於各種非法目的。
賣家通常稱他們爲「住宅代理」,以隱藏他們的非法性質。
使用這樣的代理無疑是非法的,被濫用的用戶可以輕鬆地記錄你的IP,如果你連接到它,包括劫持你的連接到目的地的可能性。
根據不同來源這些IP沒有被列入黑名單,所以「質量」比公共代理要好得多。
3)付費共享代理
這些是數據中心代理,通常具有快速上行鏈路的合法和潛在代理。
由於電子商務垃圾郵件太多,這些IP被大量濫用,通常在黑名單中發現。
一個典型的用途是繞過craigslist限制或地理限制。
4)付費私人/專用代理
「私人」是指專用。如果運營商很專業,這意味着您的代理不會與其他人分享。
這些通常用於更專業和合法的活動,特別是當代理IP更長時間出租時。
一個衆所周知的運營商將是https://us-proxies.com

自己的代理
運行自己的代理是可能的,也有各種可用的開源項目。
最常用的代理服務器是https://squid-cache.org

+3

那麼原始URL如何發送到代理? – edwin

+0

在開頭看,「http://host.tld/path」是URL。 – John

+0

@John - 如果服務器將Proxy視爲「客戶端」,那麼Cookie是如何處理的?換句話說,什麼能夠防止cookie被丟棄在代理上而不是實際的CLIENT上? – Howiecamp

6

要增加John的上述優秀答案,重要的一步是PROXY和CLIENT之間的初始CONNECT握手。從Websocket RFC

CONNECT example.com:80 HTTP/1.1 
Host: example.com 

這是一個客戶端用來打開SSL隧道,基本上使用代理

+1

我覺得這是答案的複雜部分,沒有這個,接受的答案是相當微不足道的。你已經回答了重要的一點:_how_代理髮生了。或者至少你已經帶領更多的信息。 –

+1

實際上並不是這樣,Ivan trik剛剛描述了CONNECT方法,但問題是關於http-proxies。 CONNECT用於打開一個不受限制的TCP/IP隧道,而您在我的答案中找到的隧道用於特定隧道。 HTTP。 對於SSL,您需要使用加密的原始隧道,這就是爲什麼使用CONNECT的原因。 – John