ホームページ >バックエンド開発 >Python チュートリアル >プロキシサービス機能のPython実装例
プロキシ サービスの原理は非常に単純で、ブラウザと Web サーバーを例に挙げます。これは、ブラウザ A
がエージェント B にリクエストを送信し、エージェント B がそのリクエストを Web サービス C に送信し、その後 C の応答 ->B ->A にすぎません。
Web プロキシ サービスを作成するには、まず http プロトコルを理解する必要があります。もちろん、XX 情報の変更、
負荷分散などの強力な機能を実装する場合を除き、これ以上深く理解する必要はありません。 。 http リクエストは、リクエスト行、メッセージ ヘッダー、リクエスト本文の 3 つの部分で構成されます。
詳細については、オンラインで確認できます。以下は通常の GET リクエスト ヘッダーです (Cookie 部分のスクリーンショットは撮っていません。使用されているシステムは w7 です):
最初の行を確認できます。 GET はリクエスト メソッド、 / はパス、その後にプロトコル バージョンが続きます。2 行目以降はすべてキーと値のペアの形式です。
GET メソッドには本体がありません。投稿には本文があり、リクエスト メソッドのヘッダーも基本的に同じで、各行は rn で終わります。
基本的なリクエストメソッドは以下の通りです。
GET Request-URI で特定されるリソースの取得リクエスト
POST Request-URI で特定されるリソースの後に新しいデータを追加
HEAD 取得リクエストby Request-URI で識別されるリソースの応答メッセージ ヘッダー
PUT サーバーにリソースの保存を要求し、Request-URI をその識別子として使用します
DELETE サーバーに Request-URI で識別されるリソースの削除を要求します
TRACE サーバーにレシートを返送するよう要求します。 要求された要求情報は主にテストまたは診断に使用されます
CONNECT は将来の使用のために予約されています
OPTIONS サーバーのパフォーマンスをクエリするためのリクエスト、またはサーバーに関連するオプションと要件をクエリするためのリクエストリソース
ただし、プロキシを使用した後は、プロキシ サービスから取得されます。リクエストは次のとおりです。
最初の画像と比較してください。違いは何ですか... リソース1行目のパスが間違っています。ブラウザーでプロキシ リクエストを設定する場合、URL 全体がリソース パスとして使用されるため、ドメイン名を削除する必要があります。その後、プロキシ サーバーは、変更されたリクエストをターゲット
Web サーバーに送信します。もちろん、CONNECT メソッドは特別であり、特別な処理が必要なので、最初に他のメソッドについて説明します。
基本的な考え方:
1. クライアントのブラウザー要求が到着すると、クライアント ハンドル (または記述子) が取得されます。
2. クライアント記述子を使用して受信します。ブラウザーから送信されるリクエストで、最初の行を分割してメソッドを取得するには、http:// 部分を削除し、targetHost を使用します。
3. メソッド、request、および targetHost は、ステップ 2 を通じて取得できます。このステップは、メソッドごとに異なる方法で処理できます。
GET、POET、PUT、DELETE などは、以下の点を除いて基本的に同じです。 CONNECT 処理なので、処理 1 行目、例: