我正在使用 Ruby+Watir 通过 Firefox 请求页面。
我想记录通过浏览器发出的每个 http 请求的标头和内容。
是否可以配置代理解决方案来存储此信息,无论是在文件中还是直接通过管道传输到应用程序中?我可以使用诸如 squid 或 nginx 之类的东西来记录标题/内容信息吗?
PS:运行 Ubuntu x64。
如果你不想要代理,你可以只使用 tcpdump 例如 tcpdump -i en0 -n -s 0 -w output.pcap
然后,您可以回顾性地查看wireshark等中的所有流量。
BrowserMob 代理可能非常适合您(作为 jar 文件运行)
您也可以在 Ruby 中创建自己的代码(但仅适用于 HTTP,而不适用于 HTTPS),例如
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 的价格标签。另一个值得研究的应用程序是Firefox 的附加组件Poster 。我不清楚它是捕获所有流量还是仅返回直接输入请求的响应,但仍然可以帮助您完成项目。