2010-02-05 12 views
0

J'utilise Ruby + Watir pour demander des pages via Firefox.Configurer un proxy pour enregistrer les requêtes Firefox

Je voudrais enregistrer les en-têtes et le contenu de chaque requête HTTP effectuée via le navigateur.

Serait-il possible de configurer une solution proxy pour stocker ces informations, soit dans un fichier, soit directement dans une application? Puis-je utiliser quelque chose comme calmar ou nginx pour enregistrer des informations d'en-tête/de contenu? PS: Exécution d'Ubuntu x64.

+0

Cela pourrait être mieux sur superuser.com .. –

+0

Vous devriez jeter un coup d'oeil browsermob-proxy. Et il y a aussi un client de ruby ​​gem pour créer plusieurs proxies. Le reste api permet d'obtenir un har (trafic sur le réseau, y compris les requêtes heahers) pour le proxy actuel. – activars

Répondre

0

Pour Windows il y a un programme appelé Fiddler qui fait exactement ce dont vous avez besoin, j'ai donc fait une recherche Google pour "Fiddler for Linux" et j'ai trouvé Charles. On dirait plutôt fort.

Je n'ai pas remarqué l'étiquette de prix pour la version non-procès de Charles. Une autre application qui mérite d'être étudiée est Poster, un module complémentaire pour Firefox. Il n'est pas clair pour moi si elle capture tout le trafic ou seulement renvoie la réponse pour les demandes d'entrée directement, mais pourrait encore vous aider avec votre projet.

+0

J'utilise actuellement Charles pour les tests, et bien que j'adore sa fonction d'export-> XML, je ne peux pas l'automatiser parce qu'elle ne le permet pas. Il a également des limitations de mémoire, car il stocke toutes les informations en mémoire (selon les docs). Merci pour la suggestion cependant. – Marco

+0

Oh c'est boiteux. 50 dollars pour quelque chose qui ne peut pas écrire sur le disque. Je souhaite que l'outil d'historique Firebug soit déjà mis à jour. – Anthony

1

Si vous ne voulez pas de proxy, vous pouvez simplement utiliser tcpdump, par exemple. tcpdump -i en0 -n -s 0 -w output.pcap

Vous pouvez alors regarder rétrospectivement à tout le trafic dans Wireshark etc.

Le proxy BrowserMob pourrait être un bon moyen pour vous (fonctionne comme un pot fichier)

Vous pouvez également rouler le vôtre dans Ruby (mais fonctionne uniquement avec HTTP, pas 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 [email protected]_body 
    end 
) 
    trap("INT") { server.shutdown } 
    server.start 
Questions connexes