Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?

Wie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-20 13:17:30302Durchsuche

How to Resolve Jsoup Login Form Submission Issues Due to Missing VIEWSTATE and EVENTVALIDATION Parameters?

Fehlerbehebung bei Problemen bei der Übermittlung des Jsoup-Anmeldeformulars

Problembeschreibung:

Trotz der Verwendung korrekter Anmeldeinformationen wird der unten veröffentlichte Jsoup-Code angezeigt Die Anmeldung bei der Zielwebsite schlägt fehl und zeigt stattdessen den HTML-Code der Anmeldeseite an.

<code class="java">public void connect() {

    try {
        Connection.Response loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php")
                .method(Connection.Method.GET)
                .execute();

        org.jsoup.nodes.Document document = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php")
                .data("cookieexists", "false")
                .data("username", "myUsername")
                .data("password", "myPassword")
                .cookies(loginForm.cookies())
                .post();
        System.out.println(document);
    } catch (IOException ex) {
        Logger.getLogger(WebCrawler.class.getName()).log(Level.SEVERE, null, ex);
    }
}</code>

Lösung:

Zusätzlich zu Benutzername, Passwort und Cookies Die Zielwebsite erfordert zwei zusätzliche Werte für die Anmeldung: VIEWSTATE und EVENTVALIDATION. Um diese Werte zu erhalten:

<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>

Fügen Sie dann diese Werte zur Post-Anfrage hinzu (Reihenfolge spielt keine Rolle):

<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>

Um die Funktion „An mich erinnern“ zu aktivieren, fügen Sie hinzu :

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>

Mit diesen Änderungen sollte die Anmeldung nun wie erwartet erfolgreich sein.

Das obige ist der detaillierte Inhalt vonWie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn