![]() | ![]() | ![]() |
<< 2025/07 >> | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
![]() ![]()
15/03/28 00:22 / その他のソフト
少し前から Proxy Server に凝って?いまして、現在 HTTP proxy server を開発しています。
Windows の proxy server だと delegate などが超有名なので今更感が非常にあるのですが、PMail Server2 用に将来ちょっと特殊な Proxy server を作るつもりだったので、その学習用と言った所でしょうか。 で、proxy server 自体の仕組みは簡単な物でして、基本的には 1)クライアントからの接続を受ける。 2)転送先のサーバーに接続する。 3)クライアントからの通信をサーバーに受け渡す。又はサーバーからの通信をクライアントに受け渡す。 仕組みとしてはこんなもんです。 proxy というのかはわかりませんが、2の転送先のサーバーが固定にすれば、フォワードサーバー?見たいな感じで、試しに SQL Server に対して行ってみたら、Management Studio はまんまと騙されていました(笑) ![]() これはこれで、トランザクションを記録できたりするんで便利なんですが、テスト用なので動いたことを確認して放置。 (IPベースでの接続フィルタ辺りは噛ませられるようにしましたが) ちょっと面倒になるのはここからでして、2の接続先が固定であれば楽勝で作るのは1日も掛からないのですが、特定のプロトコルが絡むと、ちょっと面倒なことになります。 余談ですが、Proxy server を検索していたら、Java などでは servelet で proxy server があって、面倒な箇所を全部やってくれるライブラリが結構ありますねぇ。 羨ましい :-) まぁ、Delphi にも Indy Component という便利な VCL がありまして、その中に HTTP proxy server もあるんですが。 将来的になんの資産にもなりませんので、全て自力で作る訳です。 時代的には、どっかの凄い人が作ったライブラリを使ってサクッと完成!が流行なのかもしれませんが、GPL 汚染とかイヤですし〜 閑話休題 2の接続先の話となりますが、HTTP の場合、GET とか POST とか HEAD とか CONNECT というコマンドがあり、そこで接続先を指定しています。 例えば、akisoftware.com に接続する場合は GET http://akisoftware.com/ HTTP/1.1 と送信すると(実際には、他にも色々ヘッダがありますが) サーバーは HTTP/1.1 200 OK (OK データを送るよ) とか HTTP/1.1 304 Not Modified(そのデータは変わってないよ) とか返事をしてくれる訳です。 単に中継を行うだけであれば、クライアントからのリクエストのみを解釈して接続先だけを取り出せばいいのですが、リクエストに干渉したり、サーバーからの応答を取り出す(キャッシュしたり)するには、HTTP をまるっと解析する必要があります。 HTTP サーバも HTTP クライアントも過去に作っていますので、そこらを組み合わせれば良いのですが、逆に過去のライブラリを使うと無駄に遅くなる(どちらも汎用で作っている為)ので、1から書き起こしています。 コツコツと空いた時間を使って作ること10日。 なんとか、まともに動くようになりました。 ![]() yahoo さんに接続している様子。 gzip を解凍しようとして、エラーが出るのでなんでだろ?と思っていたら chunk で送ってきていて、chunk の仕様ってどんなんだっけ?と過去に作った HTTP クライアントを眺めてようやく思い出してみたり(^-^; (あの chunk でゴミと言う名のサイズが入る仕様って好きじゃないんですよ・・・そこだけすっとばすのが面倒) とりあえず Windows 自身の Proxy 設定に設定すれば、IE 以外にも、chrome 等も proxy に従ってアクセスしてくれるので、普通に使えています。 フィルタリングなどの機能も実装したらフリー版とか作って製品化もしようかと思っています。 飽きずにちゃんと出来上がったらの話ですが(笑) [更新日付:2015/03/28 01:08:56]
トラックバックを見る(0) Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+8f6c5ae202452b58ed927a711c1ae78f843dfbb9] TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+8f6c5ae202452b58ed927a711c1ae78f843dfbb9] 記事へのコメント コメントはありません |
@AKISoftOfficialをフォロー
![]() 掲示板 サポートBBS PMailServer BBS アクセスの多い記事
最新記事(カテゴリ別)
![]() 04/28 09:50 ![]() 04/08 08:27 ![]() 03/19 00:04 ![]() 02/10 21:38 ![]() 02/03 12:30 ![]() 01/19 22:10 ![]() 01/14 01:49 ![]() 01/11 03:24 ![]() 12/27 08:50 ![]() 12/11 01:37 最新コメント
コメントはありません
UUアクセス数
今日は 24回
昨日は 95回 トータル 353903回 3ヶ月記事別ランキング
![]() プロフィール
Z80から68系、8086系を経由して
Pascalに移行。現在は Delphiをメインに C/C#も囓ってみたり。 「無い物は作れ」の精神で年がら年中なにかを作っています。 すぐ自前で作りたがるので無駄に工数が上がったりして自爆してみたりもします。 好きな物は麺類とお煎餅 ![]() ![]() Blom内検索
![]() BLOM Version 1.39 ©2007-15 A.K.I Software all rights reserved. |