2008-02-05
httpプロキシサーバ
WEBRickを使えばhttpプロキシサーバが簡単に作成できます。以下の記事が参考になります。
・Rubyist Magazine - WEBrickでプロキシサーバを作って遊ぶ
プロキシの基本は以下の型です。簡易Webサーバとほとんど変わりません。
#!/usr/bin/ruby -Ku require 'webrick' require 'webrick/httpproxy' config = { :BindAddress => '0.0.0.0', :Port => 8080, } s = WEBrick::HTTPProxyServer.new(config) [:INT, :TERM].each{|sig| Signal.trap(sig){s.shutdown}} s.start
「。」→「にょ。」変換
るびまで宿題になっている「。」を「にょ。」に変換するフィルタプロキシを作ってみます。
#!/usr/bin/ruby -Ku require 'webrick' require 'webrick/httpproxy' require 'kconv' handler = Proc.new() do |req, res| if res['content-type'] =~ %r!text/html! utf_str = res.body.toutf8 utf_str.gsub!(/。/, 'にょ。') code = Kconv.guess(res.body) res.body = utf_str.kconv(code, Kconv::UTF8) end end config = { :BindAddress => '0.0.0.0', :Port => 8080, :ProxyContentHandler => handler, } s = WEBrick::HTTPProxyServer.new(config) [:INT, :TERM].each{|sig| Signal.trap(sig){s.shutdown}} s.start
文字コードをUTF8に変換してから元に戻してます。最適解かは自信なし。文字コード変換については以下が詳しい。
・Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv
IEではそれなりに動きます。Firefoxでは動きません。というか、ハンドラ登録してフィルタしているものは、るびまのサンプル含めて動かない予感(スルーするだけのプロキシは動く)。原因調査中。
トラックバック - http://d.hatena.ne.jp/hayori/20080205/1202170925
リンク元
- 4 http://bellonieta.net/wordpress/2008/01/09/redmine/
- 3 http://d.hatena.ne.jp/keyworddiary/Ruby
- 3 http://wikiwiki.jp/firefox/
- 2 http://wikiwiki.jp/firefox/?FrontPage
- 1 http://b.hatena.ne.jp/t/mongrel
- 1 http://d.hatena.ne.jp/hayori
- 1 http://d.hatena.ne.jp/keyword/引数
- 1 http://d.hatena.ne.jp/keyword/Ruby
- 1 http://d.hatena.ne.jp/keyword/Ubuntu
- 1 http://d.hatena.ne.jp/keyworddiary/Ubuntu
