Maison >développement back-end >tutoriel php >Comment surmonter les problèmes d'authentification lors de la soumission de formulaires de connexion avec 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!