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 件のコメント:
コメントを投稿