簡體   English   中英

使用 Jsoup POST 登錄數據

[英]Using Jsoup to POST login data

我正在嘗試登錄此網站: http : //deeproute.com

這是我的代碼。

            Connection.Response res = null;
            Connection homeConnection = null;
            Document homePage = null;
            Map<String, String> loginCookies = null;
            try {
                res = Jsoup.connect("http://www.deeproute.com/")
                        .data("cookieexists", "false")
                        .data("name", user)
                        .data("password", pswd).method(Method.POST)
                        .execute();

            } catch (IOException e) {

                e.printStackTrace();
            }

            if (res != null) {

                loginCookies = res.cookies();

                try {
                    homePage = Jsoup.connect("http://www.deeproute.com")
                            .cookies(loginCookies).get();
                } catch (IOException e) {
                    e.printStackTrace();
                }

不幸的是,這只是在未登錄狀態下返回相同的頁面。 我究竟做錯了什么?

你需要在發帖前閱讀表格! 您缺少參數 subbera=登錄。


public static void main(String[] args) throws Exception {

    Connection.Response loginForm = Jsoup.connect("http://deeproute.com/deeproute/default.asp")
            .method(Connection.Method.GET)
            .execute();

    Document document = Jsoup.connect("http://deeproute.com/deeproute/default.asp")
            .data("cookieexists", "false")
            .data("name", "username")
            .data("password", "pass")
            .data("subbera", "Login")
            .cookies(loginForm.cookies())
            .post();

}

可能會晚幾個月(實際上很多),但我發現我必須在網站設計真正令人困惑的地方(我需要從中提取數據的網站)進行一些網絡抓取。 還必須先登錄才能獲取 cookie 信息。 @MariuszS 的回答很有幫助,但唯一的問題是,我不確定預期的 Map/Key-Value-Pairs 應該是什么。 多虧了 Javascript,我很快就檢索到了表單鍵和值,並且能夠成功登錄。 這是Javascript:

var str = "";

//the form selector i.e.
//that which is to be submitted to. In
//my case, i needed to submit the entire body
var arr = $("input[name]");

for(var i = 0, l = arr.length; i<l; i++){
str+= '.data("'+ arr[i].name +'", "'+ arr[i].value +'")'
}

將“str”的值附加到您的 Jsoup 請求之前

.method(Connection.Method.GET)
.execute();

希望這證明對我有點幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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