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