Kollektor für HTTP-Anforderungsprotokolle

Ich habe eine einfache Rails-App und sie sendet HTTP-Anfragen an einen Server, der dann die Ergebnisse in der Benutzeroberfläche anzeigt.

Ich möchte nur die Anzahl der Anfragen zählen, die ich sende, sowie die Anfrage und Antwort für jede HTTP-Anfrage.

Gibt es ein Gem oder Dienstprogramm, um Tearing-Anforderungen automatisch zu sammeln, oder muss ich dafür benutzerdefinierten Code schreiben?

BEARBEITEN

Ich muss die Anzahl der Anfragen in meiner Rails-App abrufen, damit zukünftige Anfragen basierend auf der von den Tools bereitgestellten Anzahl gesendet werden. Also muss das Tool entweder in meine Rails-App integriert werden oder es muss API-Zugriff bieten, um die Zählung zu erhalten.

Bitte sehen Sie sich auch diese ähnliche Frage an, die eine Reihe von Empfehlungen enthält.
Klären Sie bitte, ob Sie alles protokollieren wollen (dh den vollen Inhalt der Antwort, also die gesamte HTML-Seite oder JS oder binäre Daten für Bilder) oder ob Sie nur eine Anzahl von Treffern für verschiedene URLs mit erhalten möchten HTTP-Statuscodes, was normalerweise von Software zur Analyse von Webserver-Statistiken durchgeführt wird.
@MishaBrukman Im Moment reicht nur die Zählung
Wie ist es gelaufen? Nimm was du brauchst?
@ tjt263 - Nicht ganz, aber ich denke, ich kann es mit httpry versuchen
Ich habe nicht viel Erfahrung mit ruby, aber ich hätte gedacht, dass alles, was zur .pcapAusgabe in der Lage ist, geeignet sein sollte.

Antworten (4)

Vielleicht ist so etwas httprybesser für Ihren Zweck geeignet.
Weitere Informationen finden Sie unter: http://dumpsterventures.com/jason/httpry .
Der Code wird von GitHub gehostet: https://github.com/jbittel/httpry .

httpry Version 0.1.8 – HTTP-Protokollierungs- und Informationsabruftool
Urheberrecht (c) 2005-2014 Jason Bittel
Verwendung: httpry [ -dFhpqs ] [-b Datei ] [ -f Format ] [ -i Gerät ] [ -l Schwellenwert ]
              [ -m Methoden ] [ -n Anzahl ] [ -o Datei ] [ -P Datei ] [ -r Datei ]
              [ -t Sekunden] [ -u Benutzer ] [ 'Ausdruck' ]

   -b Datei HTTP-Pakete in eine binäre Speicherauszugsdatei schreiben
   -d als Dämon ausführen
   -f format Gibt die Ausgabeformatzeichenfolge an
   -F Ausgang bündig erzwingen
   -h gibt diese Hilfeinformationen aus
   -i Gerät lauscht auf dieser Schnittstelle
   -l Schwelle Gibt einen RPS-Schwellenwert für die Ratenstatistik an
   -m Methoden gibt zu parsende Anfragemethoden an
   -n count legt die Anzahl der zu parsenden HTTP-Pakete fest
   -o Datei Ausgabe in eine Datei schreiben
   -p deaktiviert den Promiscuous-Modus
   -P-Datei verwendet benutzerdefinierten PID-Dateinamen, wenn sie im Daemon-Modus ausgeführt wird
   -q unkritische Ausgabe unterdrücken
   -r Datei liest Pakete aus der Eingabedatei
   -s wird im Modus HTTP-Anforderungen pro Sekunde ausgeführt
   -t Sekunden gibt das Anzeigeintervall für Ratenstatistiken an
   -u Prozessbesitzer des Benutzersatzes
   Ausdruck gibt einen Erfassungsfilter im bpf-Stil an

Dies ist die Ausgabe, wenn ich diese Seite aktualisiere:

httpry


Wenn Sie die Ausgabe in andere Programme weiterleiten möchten (wie grepzum Beispiel), verwenden Sie -F.

-F Deaktiviert die gesamte Ausgabepufferung.
   Dies kann hilfreich sein, wenn die Ausgabe von httpry in ein anderes Programm weitergeleitet wird.
Wenn Ihnen diese Idee gefällt; es könnte sich auch für Sie lohnen, tcpdump, tshark, winpcap, usw.

Versuchen Sie Portswiggers Burp Suite.
https://portswigger.net/burp/download.html

Rülpsen

Nur eine Info, die Ihnen vielleicht helfen könnte, Ärger zu vermeiden: Beim Herunterladen der Burp-Suite bei der Firma, in der ich angestellt bin, läuten alle verfügbaren Alarmglocken ... Denn einige Anti-Malware-Tools betrachten die Burp-Suite als "Hacker-Tool", sowohl den Proxy als auch den Client Side Antivirus schreit wie die Hölle.
Bietet Burp eine API, um die Anzahl der HTTP-Anfragen für eine Website zu erhalten?
@SamuelAlexander Sie können den Zielbereich und Filter für beliebige Domains oder Adressen festlegen und eine nummerierte Liste erstellen, wie im Bild. Hilft das?
@ tjt263 Gibt es neben der Burp-Benutzeroberfläche (im Bild gezeigt) eine andere Möglichkeit, diese Anzahl zu erhalten? So etwas wie das Abrufen der Zählung durch Ausführen eines HTTP-Aufrufs oder Ruby-Codes gegen Burp.

Ich benutze Fiddler , um das für meine Arbeit zu erreichen.

  • Fiddler kann die Anforderungen vom gesamten PC oder einem bestimmten Prozess oder einer bestimmten Anwendung erfassen, indem das Symbol in das Fenster gezogen wird
  • Sie können die Anfrage und die Antworten auf der seitlichen Registerkarte für jede Anfrage sehen.
  • Sie können die Anfragen erneut senden, wenn Sie möchten, über die übersichtliche Benutzeroberfläche.
  • Sie können die Anforderungen für einen bestimmten Webbrowser oder einen bestimmten Benutzeragenten protokollieren.
  • Option zum Exportieren und Importieren der Sitzungen
  • Option zum Erstellen benutzerdefinierter Regeln
  • Option zum Minimieren in den Tray und läuft im Hintergrund.
  • Option zum Ausblenden von Bildanfragen.

Dafür stehen auch viele interessante Add -ons zur Verfügung, z. B. können Sie die als Antwort eingehenden Bilder umdrehen, der Datenverkehr unterscheidet sich, Datenschutz-Scanner-Anfragen, die Cookies setzen. Debuggen Sie Datenverkehr von jedem Ort der Welt aus. Unterstützt alle Plattformen.

Geben Sie hier die Bildbeschreibung ein

Stellt Fiddler eine API bereit, um die Anzahl der HTTP-Anforderungen für eine Website abzurufen?

Wenn Sie nicht so viele Funktionen benötigen, die Burp und Fiddler bieten, können Sie sich für Membrane Soap Monitor entscheiden . Da es sich um eine Java-basierte Anwendung handelt, läuft sie unter Linux, Mac OS und Windows.

Einfach herunterladen und entpacken, die mitgelieferte .exe findet automatisch Ihre Java Runtime. Erstellen Sie dann einen einfachen Proxy und lassen Sie alle Werte unverändert, außer denen, bei denen Sie den Namen Ihres Zielservers angeben müssen:

Geben Sie hier die Bildbeschreibung ein

Lassen Sie danach einfach Ihre Software den Proxy so adressieren, als wäre es ein normaler http-Endpunkt (ich verwende curl in meinem Beispiel):

curl http://localhost:2000/foo

Membrane zeigt Ihnen dann den Austausch mit Details (auch eingehende und ausgehende Header) und zählt die Anzahl der Austauschvorgänge:

Geben Sie hier die Bildbeschreibung ein

Ich habe sowohl mit Fiddler als auch mit dem Burp Proxy gearbeitet, die beide großartige Tools sind und Funktionen bieten, die weit über das hinausgehen, was Membrane leisten kann. Wenn Sie jedoch einen einfach einzurichtenden Proxy benötigen, empfehle ich die Verwendung von Membrane.

Bietet Fiddler oder Burp eine API, um die Anzahl der HTTP-Anforderungen für eine Website abzurufen? Siehe meine bearbeitete Frage
@SamuelAlexander In Fiddler können Sie einen Filter für einen Prozess festlegen (z. B. nur Ihre Rails-App einbeziehen), aber ich kenne keine Möglichkeit, ihn auf eine bestimmte Site zu beschränken (aber Sie könnten eine bestimmte URL ausschließen ). Membrane macht das viel einfacher: Definieren Sie einen Proxy ausschließlich für Ihre App und dann können Sie die sehen n of n Exchanges(siehe mein Screenshot)
Die Begrenzung des HTTP-Aufrufs wird also von Fiddler übernommen. Wir müssen die Anrufe in unserer Schienen-App nicht einschränken. Meinst Du das? Wenn das der Fall ist, wird es nützlich sein, aber es wird immer noch großartig sein, die Zählung durch Ausführen eines curl-Befehls oder über ruby|rails-Code gegen Fiddler zu erhalten. Ist das in Fiddler verfügbar?
Nachdem Sie Ihre Frage bearbeitet haben: Ich halte es nicht für sinnvoll, die Anzahl der Anrufe über einen Proxy zu zählen, wenn Sie die Anzahl in Ihrer Anwendung benötigen. In Java würde ich dafür einen ServletFilter oder Interceptor schreiben, Sie sollten sehen, ob dies in Rails verfügbar ist.