httpプロキシサーバ
WEBRickを使えばhttpプロキシサーバが簡単に作成できます。以下の記事が参考になります。
・るびま
・https://www.codeblog.org/blog/eto/20060210.html
プロキシの基本は以下の型です。簡易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に変換してから元に戻してます。最適解かは自信なし。文字コード変換については以下が詳しい。
・るびま
IEではそれなりに動きます。Firefoxでは動きません。というか、ハンドラ登録してフィルタしているものは、るびまのサンプル含めて動かない予感(スルーするだけのプロキシは動く)。原因調査中。