如何通过合并 VIEWSTATE 和 EVENTVALIDATION 值来解决 Jsoup 的登录表单提交问题?

Mary-Kate Olsen
发布: 2024-10-20 13:34:02
原创
929 人浏览过

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

使用 Jsoup 解决登录表单提交问题

尽管提交了正确的登录凭据,但提供的代码无法对用户进行身份验证并显示登录页面,指示潜在的实现问题。

代码中缺少的一个重要方面是包含 VIEWSTATEEVENTVALIDATION 值。网站登录需要这些值,并且可以从初始 GET 请求的响应中检索:

<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>
登录后复制

将这些值与用户名和密码一起合并到 POST 请求中可确保成功登录:

<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>
登录后复制

此外,将 userAgent 字段添加到 GET 和 POST 请求中可以模拟浏览器,并确保与手动登录时收到的响应一致。

或者,可以通过以下方式启用“记住我”字段:将以下行添加到 POST 请求:

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
登录后复制

以上是如何通过合并 VIEWSTATE 和 EVENTVALIDATION 值来解决 Jsoup 的登录表单提交问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!