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!