2010-02-05 116 views
0

我使用Ruby + Watir通過Firefox請求頁面。設置代理以記錄Firefox請求

我想通過瀏覽器記錄每個http請求的標題和內容。

是否可以配置代理解決方案來存儲此信息,無論是在文件中還是管道中直接插入應用程序?我可以使用諸如squid或nginx之類的東西來記錄標題/內容信息嗎? PS:運行Ubuntu x64。

+0

這可能是更好的superuser.com .. – 2010-02-05 08:51:25

+0

你應該看看browsermob代理。還有一個紅寶石寶石客戶端可以創建多個代理。其餘的API允許爲當前代理獲取har(網絡流量,包括請求消息)。 – activars 2012-07-07 01:01:09

回答

0

對於Windows,有一個名爲Fiddler的程序,它完全符合您的需求,所以我搜索了「Fiddler for Linux」,並提出了Charles。看起來很強壯。

我沒有注意到Charles的非試用版本的價格標籤。另一個值得關注的應用是Firefox的附加組件Poster。我不清楚它是捕獲所有流量還是隻返回直接輸入請求的響應,但仍可以幫助您完成項目。

+0

我實際上使用Charles進行測試,雖然我喜歡它的導出 - > XML功能,但我無法自動執行它,因爲它不允許這樣做。它也有內存限制,因爲它將所有信息存儲在內存中(根據文檔)。 儘管感謝您的建議。 – Marco 2010-02-05 08:55:25

+0

哦,這是跛腳。 50美元用於無法寫入磁盤的東西。我希望Firebug歷史記錄工具已經更新。 – Anthony 2010-02-05 09:04:24

1

如果你不想要代理,你可以使用tcpdump,例如 的tcpdump -i EN0 -n -s 0 -w output.pcap

然後你可以回顧一下所有流量中的Wireshark等

的BrowserMob代理可能是一個很好的適合你(運行作爲一個jar文件)

你也可以在Ruby中自己製作(但只適用於HTTP,不適用於HTTPS) eg

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 [email protected]_body 
    end 
) 
    trap("INT") { server.shutdown } 
    server.start