Kann ich dieses Formular mit cURL ausfüllen und absenden?

Kann ich dieses Formular mit cURL ausfüllen und absenden?

Ich versuche, Daten in ein Formular bei der Arbeit einzugeben. Ich vermute, dass mein naiver Ansatz nicht funktioniert, weil die „Technologie“ auf der Seite ihn stört. Im Grunde hat die Webseite (leider kann ich hier keinen Link dazu setzen, sie ist nicht öffentlich)

<form action="login.php" method="get" name="LogIn" class="form-signin"> 

und dann mehrere Eingaben wie

<input type="text" class="form-control" id="docIdent" name="docIdent" placeholder="@" required>

also versuche ich den folgenden cURL-Befehl:

curl -d "docIdent=WHATEVER" -d "type=WHATEVER" -d "comment=" URL

wobei die drei Daten anscheinend benötigt wurden, wurden wie folgt abgerufen: 1. Herunterladen der HTML-Datei. 2. Ändern der Formularmethode von „Posten“ in „Get“ und Öffnen in einem Browser. 3. Ausfüllen und Absenden des Formulars (natürlich erhielt ich die Fehlermeldung „Seite nicht gefunden“, aber die neue URL enthielt alle diese Daten, einschließlich des leeren 3. Felds).

Nun, es funktioniert nicht (ich bekomme dieselbe Anmeldeseite zurück und kann überprüfen, dass zum Zeitpunkt des Versuchs kein Login stattgefunden hat). Ich weiß nicht viel über diese Dinge, aber ich vermute, dass es ein anderer Code sein kann, der nicht auf der Seite ist: Es gibt

<script src="dist/js/bootstrap.min.js"></script>
<script src="dist/js/jquery-3.4.1.min.js"></script>
<script src='js/fns.js'></script>

und natürlich die „login.php“ beim Öffnen des Formulars. Aus vielen anderen Beiträgen geht hervor, dass meine Syntax korrekt zu sein scheint. Gibt es Hoffnung auf eine automatische Anmeldung (die Art von Bash-Skript, das ich in Cron einfügen werde, wie der Einzeiler, den ich ausprobiere)? Danke.

Antwort1

Nun, am Ende habe ich folgende Lösung gefunden: Mit meinem Browser (Firefox, Web Developer Tools) habe ich die Anfrage erfasst. Sie sah folgendermaßen aus:

curl 'URL' -H 'Host: SOMETHING' -H 'User-Agent: SOMETHING' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en,en-US;q=0.5' --compressed -H 'Referer: SOMETHING' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' --data 'WHATEVER'

... plus Cookie-Informationen, die ich entfernt habe, weil ich sehen wollte, ob der Rest, der sich nicht jedes Mal ändert, ausreicht. Und es hat funktioniert. Vielen Dank an Grawity für die hilfreiche Unterstützung.

Antwort2

Sie können jede HTTP-Anfrage (GET- oder POST-Formulare) mit den Firefox-Web-Tools erfassen:

Web-Tools -> Netzwerk -> Formular absenden -> Kontextmenü der Formular-URL (Rechtsklick auf Formular-Skript) -> Kopieren => als cURL-Adresse kopieren

Weitere Infos:https://everything.curl.dev/usingcurl/copyas

Antwort3

Ich denke, beim Posten sollten Sie verwenden-X POST

die Daten, die Sie im Formular senden möchten: --data-raw „Formularfeld1=Wert1&Formularfeld2=Wert2“

curl 'http://localhost:8000/' -X POST --data-raw 'fname=John&lname=Smith'

verwandte Informationen