Java ダイナミック プロキシ
Java ダイナミック プロキシを理解するには、まずプロキシとは何かを理解する必要があります。デザイン パターンに詳しい人は、Gof によってまとめられた 23 のデザイン パターンの中に、プロキシと呼ばれるオブジェクト構造があることを知っているはずです。動的エージェントのエージェントであるパターンは、この設計パターンを指します。
23種類のデザインパターンのうち、いわゆるプロキシモードと「デコレーションモード」は同じものだと私は考えています。 23 のデザインパターンのうち、これら 2 つのパターンの類似点と相違点については、インターネット上にもいくつかの記事がありますが、抽象化すると、確かにこの 2 つのパターンを区別することができます。あるレベルでは、これら 2 つのパターンはまったく同じではないと思います。したがって、プロキシモードを学べば、デコレーションモードもマスターできることになります。
早速、コードから始めましょう:
var express = require('express'); var request = require('request'); var app = express(); app.use('/', function(req, res) { var url = 'https://www.baidu.com/' + req.url; req.pipe(request(url)).pipe(res); }); app.listen(process.env.PORT || 3000);
10 行未満のコードで、簡単なプロキシ サーバー機能が実装されます。すごいと思いませんか?
Node.js に精通している場合は、これらのコード行を簡単に理解できるはずです。まず、HTTP サーバーを作成するための一般的なフレームワークである Express モジュールをロードします。次に、HTTP リクエストのさまざまなメソッドをカプセル化するリクエストがあり、リクエストの開始が非常に簡単になります。次にExpressオブジェクトをインスタンス化し、アクセスルートを設定します。最後にポート 3000 でリッスンします。
まず効果を見てください。上記のコードを proxy.js ファイルに保存し、ファイルが置かれているパスで実行します。
node proxy.js
localhost:3000/
をブラウザで開きます。 キーコードはルーティング処理メソッドにあります。 。
req.pipe(request(url)).pipe(res);
このパイプ メソッドはその名前 (パイプライン) のように魔法のようで、ブラウザのリクエスト データをリクエスト クライアントに渡し、ターゲット サーバーの応答データをブラウザに返します。このコードはとても簡潔です!
それでは、科学的なインターネット アクセスを実現するにはどうすればよいでしょうか?はい、ネットワークによってブロックされていないサーバー上でコードを実行するだけで問題ありません。たとえば、この Rendoso www.rendoso.com の背後には Google エージェントが存在します。
以上が簡単なプロキシサーバー機能の実装例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。