04 May '13, 8am

「ProxomitronやPrivoxy は、...独自の言語で書かなければなりません。...というわけで、Ruby でコンテンツフィルタを書いてみましょう。」 / “Rubyist Magazine - WEBrickでプロキシ…”

#!/usr/bin/env ruby require 'webrick' require 'webrick/httpproxy' require 'uri' handler = Proc.new() {|req,res| if req.host == 'slashdot.jp' and res['content-type'] =~ /text\/html/ res.body.gsub!(/<!-- begin ad code -->.*?<!-- end ad code -->/m, '') end } # プロキシサーバオブジェクトを作る s = WEBrick::HTTPProxyServer.new( # バインドアドレス(デフォルト:nil) :BindAddress => '127.0.0.1', # ポート番号(デフォルト:80) :Port => 8080, # ログ(デフォルト:nil) :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG), # proxy が通ってきたことを header で報せるか(デフォルト:true) :ProxyVia => false, # 親プロキシ(デフォルト:nil) :ProxyURI => URI.parse('http://localhost:3128/'), # ハンドラ :ProxyContentHandler => handler ) # 後処理の為に SIGINT を捕捉する。 Signal.trap('INT') do # 捕捉した場合、シャットダウンする。 s.shutdown end # サーバを起動する。 s.start

Full article: http://jp.rubyist.net/magazine/?0002-WEBrickProxy#l10

Tweets