it-swarm.com.de

HTTP-Formularbeiträge über einen Browser aufzeichnen

Ich versuche, das Login auf einer Website zu automatisieren und ein Formular einzureichen.

Gibt es ein Browser-Plugin (für Firefox oder Chrome), mit dem Sie HTTP GET- und POST -Anfragen in einer Form aufnehmen können, in der sie zu einem späteren Zeitpunkt wiedergegeben werden können? Ich suche nach etwas, das aus einem Skript automatisiert werden kann, z. via curl oder wget.

Ich habe versucht, die Chrome-Entwicklertools zur Erfassung von POST - Formulardaten zu verwenden. Beim Versuch, die Anforderung mit wget zu replizieren, werden Fehler angezeigt, was darauf hinweist, dass einige Cookies oder andere Parameter fehlen. Im Idealfall wäre dies ein automatisierter Weg von Nizza, statt viele Versuche durchzuführen.

35
Alex Spurling

Für eine einfache Interaktion benötigen Sie nicht wirklich ein Tool wie Selenium, das Anforderungen aufnimmt und wiedergibt.

Sie benötigen nur die Tools, die Sie bereits erwähnt haben:

  1. Chrome enthält bereits die erforderlichen Entwicklertools: Verwenden Sie die Registerkarte "Netzwerk". Kein Plugin zum Download. Ich weiß nicht, ob Safari funktioniert - Ich sehe keine Registerkarte "Netzwerk" in den Developer Tools.
  2. Sowohl curl als auch wget unterstützen Cookies und POST - Daten, aber ich habe Curl nur zur Automatisierung ausprobiert.

Es gibt mehrere wichtige Schritte, die ordnungsgemäß ausgeführt werden müssen (dies erfordert etwas Erfahrung):

  1. Die Abfolge der angeforderten Seiten muss die reale Benutzerinteraktion modellieren. Dies ist wichtig, da Sie nicht genau wissen, wie das Backend Formulare oder Authentifizierung verarbeitet. Hier befindet sich die Registerkarte "Netzwerk" der Chrome-Entwicklertools. (Beachten Sie, dass die Schaltfläche "Aufzeichnen" die Löschung des Protokolls verhindert.) Wenn Sie sich darauf vorbereiten, eine echte Benutzerinteraktion für Ihre Analyse zu protokollieren, vergessen Sie nicht dies Löschen Sie Ihre Cookies zu Beginn jeder Sitzung.
  2. Sie müssen alle geeigneten Optionen von curl und wget verwenden, um sicherzustellen, dass Cookies und Weiterleitungen ordnungsgemäß verarbeitet werden.
  3. Alle POST -Formularfelder müssen wahrscheinlich gesendet werden (häufig werden Felder mit Nonce-Werten angezeigt, um zu verhindern, dass CSRF

Hier ist ein Beispiel von 3 Curl-Aufrufen, die ich für ein Automatisierungsskript geschrieben habe , um die Breitbandnutzung von meinem ISP herunterzuladen:

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie-jar "$COOKIES_PATH.txt" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' >$USAGE_PATH-1.html 2>&1 && sleep 3 &&

# --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found"
curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' \
    --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service' >$USAGE_PATH-2.html 2>&1 && sleep 1 &&

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://www.optuszoo.com.au/' \
    'https://www.optuszoo.com.au//r/ffmu' >$USAGE_PATH-3.html 2>/dev/null

Beachten Sie die sorgfältige Verwendung von --cookie-jar, --cookie und --location. Die Variablen sleeps, --user-agent und --referer sind möglicherweise nicht erforderlich (das Backend wird möglicherweise nicht geprüft), aber sie sind so einfach, dass ich sie einbeziehe, um die Wahrscheinlichkeit von Fehlern zu minimieren.

In diesem Beispiel hatte ich Glück, dass es keine dynamischen POST - Felder gab, z. Anti-CSRF-Nonce-Felder, die ich extrahieren und an eine nachfolgende Anfrage weiterleiten müsste. Dies liegt daran, dass diese Automatisierung zur Authentifizierung dient. Um andere Arten von Webinteraktionen zu automatisieren, werden nach dem Einloggen des Benutzers wahrscheinlich mehr dieser dynamisch generierten Felder angezeigt.

23
huyz

Nicht gerade ein Browser-Plugin, aber Fiddler kann alle HTTP-Daten erfassen, die vor- und zurückgehen. Mit FiddlerScript oder FiddlerCore ist es dann einfach, export das in eine Textdatei zu exportieren - und diese als Anforderungsheader und Anforderungshauptteil in cURL zu übergeben.

5
Piskvor

Aktivieren Sie in Firefox die Option Persist in Firebug, um sicherzugehen, dass Sie den POST erfassen. Dann installieren Sie und verwenden Sie das "Bookmark POST" Add-On, um die POST - Anforderung zur späteren Verwendung mit einem Lesezeichen zu versehen.

4
Finn Haakansson

Firefox Firebug verfügt bereits über eine Funktion, mit der Sie eine Webanforderung als Curl-Anforderung kopieren können, sodass alle verschiedenen Elemente der Anforderung in der Befehlszeile angezeigt werden.

Schalten Sie den Firebug ein, klicken Sie mit der rechten Maustaste auf eine Anfrage im Bereich "Netz" und wählen Sie Als cURL kopieren. Dann verwenden Sie es in der curlhttps://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL

3
Azi

Haben Sie versucht, Selen ?

3
DanSingerman

Es gibt zu viele Methoden, die Sie wählen können.

  1. Verwenden Sie Firefox und Selenium IDE. Es kann Ihre Browseraktion aufzeichnen

  2. User Selenium Web Driver. Es kann verschiedene Browseraktionen anhand des Skripts simulieren, das Sie in Ruby oder Java schreiben.

  3. Verwenden Sie ein Makro-Plugin für Firefox, um absolute Klicks und Tastendrücke zu simulieren.

  4. Verwenden Sie eine Makroanwendung auf Betriebssystemebene und machen Sie dasselbe wie 3.

  5. Schreiben Sie ein Skript (z. B. PHP), um die tatsächliche Form oder Cookie-Interaktion zu simulieren.

No.1 ist allgemein und einfach zu bedienen. No.4 kann mächtig sein, aber Sie brauchen Zeit, um die Automatisierung zu verbessern.
Nr. 3 ist in der Mitte von Nr. 4 und Nr. 1 . Nr. 2 kann auch ein Tool für Umgebungstests und Stresstests sein Nr. 5 scheint die flexibelste und ressourcenstärkste Ressource zu sein Sparen.

2

Vor kurzem habe ich über diese schöne Chrom-Erweiterung geschaut, die genau das macht, was Sie wollen: Katalon Recorder

Katalon Recorder erleichtert Ihnen die Testautomatisierung.

  • Aufnehmen, Abspielen, Debuggen mit Geschwindigkeitskontrolle, Pause/Fortsetzen, Haltepunkte.

  • Im Vergleich zu anderen Erweiterungen mit der Selenium 3-Core-Engine erreichen Sie die höchste Ausführungsgeschwindigkeit.

  • Verwenden Sie mehrere Locator-Typen, einschließlich XPath und CSS.

  • Verwenden Sie die ursprünglichen Selenium IDE Befehle (Selenese) und die Blockanweisung if ... elseIf ... else ... endIf und while ... endWhile. Das Testen der Dateieingangssteuerung wird unterstützt.

  • Importieren Sie Testdaten aus CSV-Dateien für datengesteuerte Tests.

  • Berichterstellung mit Protokollen, Screenshots, historischen Daten und Analysen von Katalon Analytics.

  • Erstellen und Organisieren von Testfällen in Suites. Verpassen Sie nie Ihre Arbeit mit der automatischen Speicherfunktion.

  • Importieren Sie originale Selenium IDE (Firefox-Erweiterung) -Tests.

  • Exportieren Sie die Selenium WebDriver-Skripts in diesen Frameworks: C # (MSTest und NUnit), Java (TestNG und JUnit), Ruby (RSpec), Python (unittest), Groovy (Katalon Studio), Robot Framework und XML.

0
Promod
0
princecharmx

Die Safari-Entwicklertools und Firebug reichen für Ihre Anforderungen aus.

0
Alessandro