Ruby+Watir を使用して、Firefox からページをリクエストしています。
ブラウザを介して行われるすべての http リクエストのヘッダーとコンテンツを記録したいと思います。
この情報をファイルに保存するか、アプリケーションに直接パイプするかのいずれかで、プロキシ ソリューションを構成することは可能でしょうか? squid や nginx などを使用してヘッダー/コンテンツ情報を記録できますか?
PS: Ubuntu x64 を実行しています。
プロキシが必要ない場合は、tcpdump を使用できます (例: tcpdump -i en0 -n -s 0 -w output.pcap)。
その後、wireshark などですべてのトラフィックを遡及的に調べることができます。
BrowserMob プロキシが適している可能性があります (jar ファイルとして実行されます)。
Ruby で独自のロールを作成することもできます (ただし、HTTPS ではなく HTTP でのみ機能します)。
require 'rubygems'
require 'webrick/httpproxy'
@proxy_port = ARGV[0] || 9090
# Optional flags
@print_headers = false
@print_body = true
server = WEBrick::HTTPProxyServer.new(
:Port => @proxy_port,
:AccessLog => [],
:ProxyContentHandler => Proc.new do |req,res|
puts "-"*75
puts ">>> #{req.request_line.chomp}\n"
req.header.keys.each { |key| puts "#{key.capitalize}: #{req.header[key]}" if @print_headers }
puts "<<<" if @print_headers
puts res.status_line if @print_headers
res.header.keys.each { |key| puts "#{key.capitalize}: #{res.header[key]}" if @print_headers }
puts res.body unless res.body.nil? or !@print_body
end
)
trap("INT") { server.shutdown }
server.start
Windows には、必要なことを正確に実行するFiddlerというプログラムがあるため、Google で「 Fiddler for Linux」を検索したところ、Charlesが見つかりました。かなり強そうです。
Charles の非試用版の値札に気づきませんでした。調べる価値のあるもう 1 つのアプリは、Firefox のアドオンであるPosterです。すべてのトラフィックをキャプチャするのか、直接入力されたリクエストに対してのみ応答を返すのかは明確ではありませんが、それでもプロジェクトに役立つ可能性があります.