Maison  >  Article  >  développement back-end  >  Comment surmonter les problèmes d'authentification lors de la soumission de formulaires de connexion avec Jsoup

Comment surmonter les problèmes d'authentification lors de la soumission de formulaires de connexion avec Jsoup

DDD
DDDoriginal
2024-10-20 13:18:30467parcourir

How to Overcome Authentication Issues While Submitting Login Forms with Jsoup

Défis rencontrés lors de la soumission des formulaires de connexion avec Jsoup

Malgré la saisie d'informations de connexion valides, vous pouvez rencontrer des difficultés pour accéder à un site à l'aide du code fourni. Lors de l'exécution, le code ne parvient pas à s'authentifier, ce qui indique un problème potentiel.

Un oubli possible concerne l'exigence de valeurs supplémentaires au-delà du nom d'utilisateur, du mot de passe et des cookies. Plus précisément, le site nécessite l'inclusion de VIEWSTATE et EVENTVALIDATION.

Pour résoudre ce problème, récupérez ces valeurs à 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>

Incorporez ces valeurs dans le POST suivant. request :

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

Inclure le champ userAgent pour assurer la compatibilité avec le rendu spécifique au navigateur du site.

Améliorations

Pour activer le "souvenir "moi" lors de la connexion :

<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