0

我正在使用 Ruby+Watir 通过 Firefox 请求页面。

我想记录通过浏览器发出的每个 http 请求的标头和内容。

是否可以配置代理解决方案来存储此信息,无论是在文件中还是直接通过管道传输到应用程序中?我可以使用诸如 squid 或 nginx 之类的东西来记录标题/内容信息吗?

PS:运行 Ubuntu x64。

4

2 回答 2

1

如果你不想要代理,你可以只使用 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
于 2011-04-05T19:20:35.840 回答
0

对于 Windows,有一个名为Fiddler的程序可以完全满足您的需求,因此我在 Google 上搜索了“ Fiddler for Linux ”并找到了Charles。看起来挺强的。

我没有注意到非试用版 Charles 的价格标签。另一个值得研究的应用程序是Firefox 的附加组件Poster 。我不清楚它是捕获所有流量还是仅返回直接输入请求的响应,但仍然可以帮助您完成项目。

于 2010-02-05T08:52:46.800 回答