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

Mary-Kate Olsen
Libérer: 2024-10-20 13:34:02
original
1009 Les gens l'ont consulté

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

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

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

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