[解決済み] C#で簡単なプロキシを作成する方法は?
質問
数週間前にPrivoxyをダウンロードしたのですが、その簡単なバージョンがどのようにできるのか知りたくなりました。
ブラウザ(クライアント)がプロキシにリクエストを送信するように設定する必要があることは理解しました。プロキシはWebにリクエストを送信する(httpプロキシとする)。プロキシはその答えを受け取ります。しかし、プロキシはどのようにしてブラウザ(クライアント)にリクエストを送り返すことができるのでしょうか?
C#とhttpプロキシについてウェブで検索してみましたが、舞台裏でどのように動作しているかを正しく理解できるものは見つかりませんでした。(私はリバースプロキシが必要ではないと信じていますが、私は確信していません)。
この小さなプロジェクトを続けられるような説明や情報をお持ちの方はいらっしゃいませんか?
更新情報
これは私が理解していることです(下の図参照)。
ステップ1 クライアント(ブラウザ)は、すべてのリクエストをプロキシがリッスンするポートの 127.0.0.1 に送信するように設定しました。この方法では、リクエストは直接インターネットに送信されるのではなく、プロキシによって処理されます。
ステップ2 プロキシは新しい接続を見て、HTTPヘッダを読み、彼が実行しなければならない要求を参照してください。彼はそのリクエストを実行する。
ステップ3 プロキシはリクエストからアンサーを受信します。ここで彼はウェブからクライアントにアンサーを送らなければなりませんが、どのように?
お役立ちリンク
メンタリス・プロキシ : 私はプロキシであるこのプロジェクトを見つけました(しかし、私が望むより多くのもの)。私はソースをチェックするかもしれませんが、私は本当にコンセプトをより理解するための基本的な何かを望んでいました。
ASPプロキシ : こちらでも情報を得られるかもしれませんね。
リクエストリフレクター : これは簡単な例です。
以下は Git Hub リポジトリとシンプルな Http プロキシ .
解決するには?
で構築することができます。
HttpListener
クラスで受信したリクエストをリッスンし
HttpWebRequest
クラスがリクエストを中継します。
関連
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] プロキシサーバーで Git を動かす - "Request timed out" で失敗する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015