Подтвердить что ты не робот

Как отправлять данные на веб-сайт с помощью Jsoup

Я пытаюсь отправить данные POST на веб-сайт, чтобы сделать вход на сайт с помощью Jsoup, но он не работает?

Я пытаюсь выполнить код

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

здесь он предоставляет обычную страницу входа в sourceource

Я также пробовал код

 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();

здесь также он возвращает обычную страницу логина снова в sourceource.

Любые предложения относительно того же будут высоко оценены!

Спасибо....

4b9b3361

Ответ 1

Я отвечу на ваш вопрос, взяв пример. Предположим, вы хотите войти в facebook.

Затем помимо имени пользователя и пароля есть много других параметров, которые также передаются через запрос POST. Все параметры скрыты и передаются аналогично имени пользователя и паролю. Например:

Если вы откроете html source facebook, вы увидите, что есть один скрытый параметр: 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.

Ответ 2

Если проблема связана с переадресацией javascript, вы можете попробовать перейти на javascript и проверить, является ли перенаправляемый URL-адресом статическим, а затем использовать перенаправление для получения доступа. Я сделал это, чтобы открыть всплывающее окно, сделанное javascript один раз.

Ответ 3

Почтовые данные также могут быть отправлены с использованием карты. Выглядит более управляемым и чистым. Иногда веб-сайты проверяют наличие некоторых заголовков, поэтому передайте эти заголовки, чтобы сделать запрос таким же, как и должно быть. Большую часть времени ожидается тип контента.

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();
    }
}