Maison > développement back-end > tutoriel php > Comment résoudre les problèmes de soumission du formulaire de connexion Jsoup en raison de paramètres VIEWSTATE et EVENTVALIDATION manquants ?

Comment résoudre les problèmes de soumission du formulaire de connexion Jsoup en raison de paramètres VIEWSTATE et EVENTVALIDATION manquants ?

Mary-Kate Olsen
Libérer: 2024-10-20 13:17:30
original
309 Les gens l'ont consulté

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

Dépannage des problèmes de soumission du formulaire de connexion Jsoup

Énoncé du problème :

Malgré l'utilisation des informations de connexion correctes, le code Jsoup publié ci-dessous ne parvient pas à se connecter au site Web cible, affichant à la place le code HTML de la page de connexion.

<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>
Copier après la connexion

Solution :

En plus du nom d'utilisateur, du mot de passe et des cookies, le site Web cible nécessite deux valeurs supplémentaires pour la connexion : VIEWSTATE et EVENTVALIDATION. Pour obtenir ces valeurs :

<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>
Copier après la connexion

Ensuite, ajoutez ces valeurs à la demande de publication (l'ordre n'a pas d'importance) :

<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>
Copier après la connexion

Pour activer la fonctionnalité "Se souvenir de moi", ajoutez :

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Copier après la connexion

Avec ces modifications, la connexion devrait maintenant réussir comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal