如何透過合併 VIEWSTATE 和 EVENTVALIDATION 值來解決 Jsoup 的登入表單提交問題?

Mary-Kate Olsen
發布: 2024-10-20 13:34:02
原創
930 人瀏覽過

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學習者快速成長!