Maison >développement back-end >tutoriel php >Comment résoudre les problèmes de soumission de formulaire de connexion avec Jsoup en incorporant les valeurs VIEWSTATE et EVENTVALIDATION ?

Comment résoudre les problèmes de soumission de formulaire de connexion avec Jsoup en incorporant les valeurs VIEWSTATE et EVENTVALIDATION ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 13:34:021018parcourir

How to Resolve Login Form Submission Issues with Jsoup by Incorporating VIEWSTATE and EVENTVALIDATION Values?

Résoudre les problèmes de soumission du formulaire de connexion à l'aide de Jsoup

Malgré la soumission des informations de connexion correctes, le code fourni ne parvient pas à authentifier les utilisateurs et affiche la page de connexion, indiquant des problèmes de mise en œuvre potentiels.

Un aspect essentiel manquant dans le code est l'inclusion des valeurs VIEWSTATE et EVENTVALIDATION. Ces valeurs sont requises par le site Web pour la connexion et peuvent être récupérées à partir de la réponse de la requête GET initiale :

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

L'intégration de ces valeurs dans la requête POST avec le nom d'utilisateur et le mot de passe garantit une connexion réussie :

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

De plus, l'ajout du champ userAgent aux requêtes GET et POST simule un navigateur et garantit la cohérence avec la réponse reçue lors d'une connexion manuelle.

En option, le champ Se souvenir de moi peut être activé par en ajoutant la ligne suivante à la requête POST :

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

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!

Déclaration:
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