2010-02-05 4 views
0

Я использую Ruby + Watir для запроса страниц через Firefox.Настройка прокси для записи запросов Firefox

Я хотел бы записать заголовки и содержимое каждого запроса http, сделанного через браузер.

Можно ли настроить прокси-решение для хранения этой информации в файле или в трубке прямо в приложении? Могу ли я использовать что-то вроде squid или nginx для записи информации заголовка/контента?

PS: Запуск Ubuntu x64.

+0

Это может быть лучше на superuser.com .. –

+0

Вы должны взглянуть на browserermob-proxy. И также есть клиент рубинового драгоценного камня для создания нескольких прокси. В остальном api позволяет получить хар (сетевые трафик, в том числе хосты-запросы) для текущего прокси. – activars

ответ

0

Для Windows существует программа под названием Fiddler, которая делает именно то, что вам нужно, поэтому я сделал поиск в Google для «Fiddler for Linux» и придумал Charles. Выглядит довольно сильным.

Я не заметил цену за неисключительную версию Чарльза. Еще одно приложение, заслуживающее внимания, - это Poster, дополнение для Firefox. Мне непонятно, захватывает ли он весь трафик или возвращает ответ только для непосредственных запросов на вход, но все равно может помочь вам в вашем проекте.

+0

Я на самом деле использую Charles для тестирования, и хотя мне нравится его функция export-> XML, я не могу его автоматизировать, потому что это не позволяет. Он также имеет ограничения по памяти, поскольку он хранит всю информацию в памяти (согласно документам). Спасибо за предложение. – Marco

+0

О, это хромой. 50 баксов за то, что невозможно записать на диск. Я хочу, чтобы инструмент истории Firebug был уже обновлен. – Anthony

1

Если вы не хотите прокси-сервер, вы можете просто использовать tcpdump, например. ТСРйитр -i en0 -n -s 0 -w output.pcap

Вы можете ретроспективно посмотреть на весь трафик в Wireshark и т.д.

BrowserMob прокси может быть хорошо подходит для вас (работает как баночке файл)

Вы также можете свернуть свой собственный в 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 
Смежные вопросы