Http代理前後的不同之處

來源:互聯網
上載者:User

winsock實現HTTP代理提交HTTP請求的方法有兩種
1、直接請求
2、先連通遠程伺服器後就相普通提交請求一樣提交HTTP請求

說一下第一種方法:

先說一下我們普通的提交HTTP請求的過程:
直接連接遠程伺服器後,當串連成功時向伺服器提交HTTP頭,注意看看大概的格式
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive

再看看使用代理的串連方法
先串連Proxy 伺服器(IP地址、連接埠),然後向Proxy 伺服器提交這樣的HTTP頭
GET http://www.baidu.com/ HTTP/1.0
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Proxy-Connection:
Keep-Alive

區別就這麼一點,
1、串連的不是目標伺服器的IP地址和連接埠而是Proxy 伺服器IP地址和連接埠
2、提交的不是相對的地址而是絕對的HTTP地址
3、Connection: Keep-Alive
Proxy-Connection:
Keep-Alive
區別

再說說第二種方法:
其實這種方法很強大,他除了可以實現HTTP協議的代理,還可以實現其他TCP/IP協議的處理。
如:POP2、SMTP、FTP等等
先看看理論把,其實就是用戶端串連Proxy 伺服器後,讓Proxy 伺服器去串連遠程伺服器,當Proxy 伺服器串連好遠程伺服器
成功後,會返回串連結果給用戶端,這時用戶端判斷結果,如果串連成功了就直接發送正常的資料給代理,代理收到資料
後立刻轉寄給伺服器,其實就是個中轉站。就是開始串連的時候不同,後面所有的通訊可以照常操作

用戶端先串連Proxy 伺服器,然後向Proxy 伺服器提交請求,告訴他要串連到哪:
CONNECT www.baidu.com:80 HTTP/1.1
Accept: */*
Content-Type: text/html
Proxy-Connection:
Keep-Alive

Content-length: 0

這時,如果Proxy 伺服器串連成功會返回這樣一段資訊(用戶端收到的資訊,注意,不要這個時候中斷連線喲,呵呵)
HTTP/1.0 200 Connection established
Proxy-agent: CCProxy 6.4.2    '這裡是代理程式的名稱,看你的是什麼代理軟體

這時你就可以發出正常的請求了
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive

然後就可以收到遠程伺服器發過來的網頁資訊了

如何判斷返回的訊息接收完了呢?有時候訊息會分成幾段來返回

這個要看協議的,如果是HTTP協議,可以有兩種方式判斷。
1、通過Content-length的值判斷要接收的資料大小,資料夠了就中斷連線,注意,HTTP頭的資料大小不算。
2、在HTTP換上Connection: Close,由伺服器發送完伺服器自動斷開,不用你去判斷什麼時候該斷開
  你就管收資料,收到Close事件時中斷連線就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.