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では動きません。というか、ハンドラ登録してフィルタしているものは、るびまのサンプル含めて動かない予感(スルーするだけのプロキシは動く)。原因調査中。