43

HTTP Webサーバーを実装する場合と比較して、HTTPプロキシを実装する方法はどのようになっていますか?違いは何ですか?この主題に関する決定的なガイドまたはRFCまたは役立つ本はありますか?

4

3 に答える 3

48

プロキシに送信されるヘッダーは異なります。

たとえば、GoogleChromeからプロキシサーバー経由でwww.baidu.comに送信されるものは次のとおりです。

GET http://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

わかります

GET http://www.baidu.com/ HTTP/1.1

それ以外の

GET / HTTP/1.1

そしてここにあります

Proxy-Connection: keep-alive

また

Host: www.baidu.com

httpプロキシにはホストフィールドが必要です。

HTTPSトンネルプロキシの場合:

CONNECT comet.zhihu.com:443 HTTP/1.1
Host: comet.zhihu.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

見える

CONNECT comet.zhihu.com:443 HTTP/1.1

domain:443の代わりにhttps://domain

CONNECTフィールドは、プロキシサーバーをTCPトンネルのようなものに変え、プロトコルHTTPSはポートに置き換えられます:443

socks5プロキシの場合、socks5はより高いプロトコルを気にしないため、作業が簡単になります。ホストとポートを指定するだけです。

于 2016-07-08T04:50:04.500 に答える
8

プロキシはサーバーと非常によく似ています。唯一の違いは、リクエストを解析した後、リクエスト自体を処理するのではなく、単に転送して結果*を返すことです。プロキシは通常のサーバーと同じ量の処理を行う必要がないため、フルフレッドサーバーよりもはるかに最小限のリクエストの解析で解決できることがよくありますが、それ以外は同じ考え方です。

*一部のプロキシは追加のキャッシュを実装しています。一部の人は応答/要求に悩まされますが、それは邪悪な種類のプロキシであり、うまくいけばあなたは心に留めていません。

于 2011-09-28T03:28:03.527 に答える