Beheben von Problemen bei der Übermittlung von Anmeldeformularen mit Jsoup
Obwohl die korrekten Anmeldeinformationen übermittelt wurden, kann der bereitgestellte Code Benutzer nicht authentifizieren und zeigt die Anmeldeseite an. weist auf mögliche Implementierungsprobleme hin.
Ein wesentlicher Aspekt, der im Code fehlt, ist die Einbeziehung der Werte VIEWSTATE und EVENTVALIDATION. Diese Werte werden von der Website für die Anmeldung benötigt und können aus der Antwort der ersten GET-Anfrage abgerufen werden:
<code class="java">Document doc = loginForm.parse(); Element e = doc.select("input[id=__VIEWSTATE]").first(); String viewState = e.attr("value"); e = doc.select("input[id=__EVENTVALIDATION]").first(); String eventValidation = e.attr("value");</code>
Die Einbeziehung dieser Werte in die POST-Anfrage zusammen mit dem Benutzernamen und dem Passwort stellt eine erfolgreiche Anmeldung sicher:
<code class="java">org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php").userAgent("Mozilla/5.0") .data("myLogin$myUsername", "MyUsername") .data("myLogin$myPassword, "MyPassword") .data("myLogin$myLoginButton.x", "22") .data("myLogin$myLoginButton.y", "8") .data("__VIEWSTATE", viewState) .data("__EVENTVALIDATION", eventValidation) .cookies(loginForm.cookies()) .post();</code>
Darüber hinaus simuliert das Hinzufügen des userAgent-Felds zu GET- und POST-Anfragen einen Browser und stellt die Konsistenz mit der bei einer manuellen Anmeldung erhaltenen Antwort sicher.
Optional kann das Feld „Angemeldet bleiben“ aktiviert werden Fügen Sie der POST-Anfrage die folgende Zeile hinzu:
<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Das obige ist der detaillierte Inhalt vonWie kann man Probleme bei der Übermittlung von Anmeldeformularen mit Jsoup lösen, indem man die Werte VIEWSTATE und EVENTVALIDATION einbezieht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!