Как отправлять данные на веб-сайт с помощью 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.
Любые предложения относительно того же будут высоко оценены!
Спасибо....
Ответы
Ответ 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();
}
}