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

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

DDD
DDD原創
2024-10-20 13:18:30573瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn