首頁 > 後端開發 > php教程 > 如何克服使用 Jsoup 提交登入表單時的身份驗證問題

如何克服使用 Jsoup 提交登入表單時的身份驗證問題

DDD
發布: 2024-10-20 13:18:30
原創
572 人瀏覽過

How to Overcome Authentication Issues While Submitting Login Forms with Jsoup

使用Jsoup 提交登入表單時遇到的挑戰

儘管輸入了有效的登入憑證,但使用提供的程式碼存取網站時可能會遇到困難。執行後,程式碼無法進行身份驗證,這表示存在潛在問題。

一個可能的疏忽涉及使用者名稱、密碼和 cookie 以外的其他值的要求。具體來說,該站點需要包含 VIEWSTATE 和 EVENTVALIDATION。

要解決此問題,請從初始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 欄位以確保與網站特定瀏覽器渲染的兼容性。

增強

要啟動「記得登入時的「我」功能:

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
登入後複製

以上是如何克服使用 Jsoup 提交登入表單時的身份驗證問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板