[英]How to log in to an HTTPS website with Jsoup?
我最近對網絡爬蟲感興趣,因此決定嘗試Jsoup。 我不確定如何使用它登錄網站。 我看到了另一篇有關它的文章,但無法拼湊出如何做。
我一直在嘗試使用網站www.tickld.com進行爬網,並且登錄站點為“ https://www.tickld.com/signin ”。
我不確定我是否正確使用了Jsoup(我確定這是主要原因),錯誤是.jks還是輸入了錯誤的信息,我不確定如何使用測試代碼的哪一部分失敗。
System.setProperty("javax.net.ssl.trustStore", "filePath\\keystore.jks");
Connection.Response loginForm = Jsoup.connect("https://www.tickld.com/signin")
.method(Connection.Method.GET).execute();
Document document = Jsoup.connect("https://www.tickld.com/signing")
.data("l_username", "myUsername")
.data("l_password", "myPassword")
.cookies(loginForm.cookies())
.post();
但是無論我做什么,都不會登錄該站點,只會帶我進入登錄頁面。
登錄由ajax處理。 我正在使用chrome,所以這就是我所做的。 嘗試從瀏覽器通過表單登錄。 按F12,然后按Console。 您將看到類似此XHR finished loading: POST "https://www.tickld.com/ajax/login.php".
。 發出POST請求時,將其發送到位於form
標記的action
參數中的url。 在這種情況下,不存在此類網址,因為它是由javascript處理的。
試試這個,看看是否可行。
Document document = Jsoup.connect("https://www.tickld.com/ajax/login.php")
.data("l_username", "myUsername")
.data("l_password", "myPassword")
.cookies(loginForm.cookies())
.post();
如果沒有,那么您可能需要使用一些無頭瀏覽器(可以處理js執行),例如selenium webdriver。
更新
Connection.Response login = Jsoup.connect("https://www.tickld.com/signin")
.data("l_username", "myUsername")
.data("l_password", "myPassword")
.method(Connection.Method.POST)
.execute();
Document document = Jsoup.connect("http://www.tickld.com/user/chosimbaaaa")
.cookies(login.cookies())
.get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.