簡體   English   中英

如何使用Jsoup登錄HTTPS網站?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM