Macのブラウザでネットワーク関連の処理をあれこれしたいと思った時に、Windowsを利用していた時に使っていたFiddler的なものが欲しくなりました。WEBrickを使ってプロキシサーバをつくれば、似たような事ができる(?)と教えていただいたので、早速試してみる事にしました。
サーバサイドのスクリプトも、Ruby自体もあまり触った事がなかったので、ついでにどんな風にかけるのかあれこれいじりながらやってみる事にしています。いろいろとやってみたい事があるのですが、とりあえず置き換えの方法だけでもメモしておきます。
Webrickを利用している部分は抜き出してクラスに。まだまだいろいろと機能があるようなのでいじりながら何ができるかを検討中。
##./lib/proxy.rb #!usr/bin/ruby require 'webrick' require 'webrick/httpproxy' include WEBrick class Proxy attr_accessor :config def start print @config @server = WEBrick::HTTPProxyServer.new( @config ) Signal.trap('INT') do @server.shutdown end @server.start end def shutdown @server.shutdown end end設定ファイル(yml)
server: :BindAddress : '127.0.0.1' :Port : 10080 :DocumentRoot : '' :CGIInterpreter : '/usr/bin/ruby'
handlerの中身の部分は、あまりいろいろ試してみていないのでこれからいろいろと試しつつ、できそうな事があれば実装していこうと思います。URLを比較する部分とかはまだ適当です。
##./main.rb #!usr/bin/ruby require './lib/proxy.rb' require 'yaml' @server = Proxy.new REPLACE_CONTENT =<<EOF <body> <h1>Oh!</h1> <body> EOF REPALCE_TARGET = "tsukajizo.com/" def start_proxy #Handler handler = Proc.new(){|req,res| if "#{req.host}#{req.path}" == REPALCE_TARGET res.body = REPLACE_CONTENT end } #プロキシサーバの設定 config = YAML.load_file('./config.yml') server_config = config['server'] server_config[:ProxyContentHandler] = handler #プロキシサーバの起動 @server.config = server_config @server.start end start_proxyなんか、こうもうちょっと使いやすい感じにしていきたいですね。
とりあえず。
→
こんな感じです。
0 件のコメント:
コメントを投稿