簡體   English   中英

如何使用 Jsoup 將數據發布到網站

[英]How to POST Data into website using Jsoup

我正在嘗試將數據發布到網站以使用 Jsoup 登錄該網站,但它不起作用?

我正在嘗試代碼

    Document docs = Jsoup.connect("http://some.com/login")
        .data("cmd", "login","username", "xxxx","password", "yyyyy")
        .referrer("http://some.com/login/").post();

這里是在 pagesource 中提供正常的登錄頁面

我也試過代碼

 Document docs = (Document) Jsoup.connect("http://some.com/login")
    .data("cmd", "login","username", "xxxx","password", "yyyyy")
    .referrer("http://some.com/login/").method(Method.POST).execute().parse();

在這里它也在頁面源中再次提供正常的登錄頁面。

任何有關相同的建議將不勝感激!

謝謝....

我將通過舉個例子來回答你的問題。 假設你想登錄 facebook。

然后除了用戶名和密碼之外,還有許多其他參數也通過POST請求傳遞。 這些所有參數都是隱藏的,並且與用戶名和密碼類似地傳遞。 例如:

如果打開 facebook 的html source ,可以看到隱藏了一個參數lgnrnd ,其值為071129_5D7M

所以還有很多其他類似的參數。您需要傳遞所有參數。 您還應該指定userAgent.

Document doc = Jsoup.connect("http://www.facebook.com")
.data("email", "myemailid")
.data("pass", "mypassword")
// and other hidden fields which are being passed in post request.
.userAgent("Mozilla")
.post();
System.out.println(doc); // will print html source of homepage of facebook.

如果問題是 javascript 重定向,您可以嘗試進入 javascript 並檢查它重定向到的 URL 是否是 static,然后使用重定向獲得訪問權限。 我這樣做是為了訪問一次由 javascript 創建的彈出框。

也可以使用 Map 發送發布數據。 看起來更有條理和干凈。 有時網站會檢查某些標頭的存在,因此傳遞這些標頭以使請求盡可能相似。 大多數情況下,內容類型是預期的。

package test;

import java.util.HashMap;
import java.util.Map;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 * POST example
 * 
 * @author iampayload
 *
 */
public class JsoupPost {

    private final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0";

    private final String urlPost = "https://www.huawei.com/en/accounts/PersonalPost";

    // main class
    public static void main(String[] args) throws Exception {
    JsoupPost http = new JsoupPost();
    http.sendPost();
    }

    // HTTP Post request
    private void sendPost() throws Exception {

    Map<String, String> postData = new HashMap<>();
    postData.put("username", "xxxx");
    postData.put("cmd", "login");
    postData.put("password", "yyyyy");

    Document doc = Jsoup.connect(urlPost).ignoreContentType(true).userAgent(USER_AGENT).data(postData).post();
    }
}

暫無
暫無

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

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