![Kann ich dieses Formular mit cURL ausfüllen und absenden?](https://rvso.com/image/1604271/Kann%20ich%20dieses%20Formular%20mit%20cURL%20ausf%C3%BCllen%20und%20absenden%3F.png)
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'