#java #php #jsoup
#java #php #jsoup
Вопрос:
JSoup войдите на веб-сайт, а затем откройте другую страницу, СОХРАНЯЯ этот сеанс входа.
Кто-нибудь может объяснить, как войти на этот сайт с помощью JSoup?
Мой код в настоящее время (полностью терпит неудачу, я уверен, что я на неправильном «пути»):
Connection.Response loginForm = Jsoup.connect("http://www.rlo.nl/roostersinfoweb/infoweb/index.php")
.method(Connection.Method.GET)
.execute();
Document doc = Jsoup.connect("http://www.rlo.nl/roostersinfoweb/infoweb/index.php").get();Jsoup.connect("http://www.rlo.nl/roostersinfoweb/infoweb/authentication.php")
.data("cookieexists", "false")
.data("username", "110")
.data("password", "sgl16")
.data("login", "Login")
.cookies(loginForm.cookies())
.post();
В одном я уверен: authentication.php не существует.
Я новичок в JSoup, поэтому, пожалуйста, объясните некоторый код и расскажите мне о части «cookie» (я знаю, что такое cookie, но не то, как вы используете их с JSoup.)
Ответ №1:
Есть несколько моментов, которые нужно исправить:
- конечная точка входа неверна (правильная
http://www.gymnasiumleiden.nl/roostersinfoweb/infoweb/index.php
); - некоторые
POST
отправляемые вами параметры написаны с ошибками (напримерusername
, должно бытьuser
); - некоторые
POST
параметры не требуются (напримерcookieexists
); - вы не добавляете требуемый
csrf
параметр вPOST
запрос. - вы должны проверить ответ, чтобы понять, в порядке ли вход в систему или нет.
Мой рабочий код (с проверкой ошибок):
Connection.Response loginForm = Jsoup
.connect("http://www.gymnasiumleiden.nl/roostersinfoweb/infoweb/index.php")
.method(Connection.Method.GET)
.execute();
Document doc = loginForm.parse();
String csrf = doc.select("input[name=csrf]").val();
Connection.Response response = Jsoup.connect("http://www.gymnasiumleiden.nl/roostersinfoweb/infoweb/index.php")
.data("user", "110638")
.data("paswoord", "sgl1617")
.data("login", "loginform")
.data("csrf", csrf)
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.execute();
String body = response.body();
if(body.contains("Wachtwoord is incorrect")){
System.out.println("Password incorrect!");
} else if(body.contains("Gebruikersnaam werd niet gevonden.")){
System.out.println("Not found username!");
} else {
System.out.println("Login successfully!");
}
Комментарии:
1. https://www.mkyong.com/java/how-to-automate-login-a-website-java-example / и http://www.javacodeexamples.com/jsoup-login-to-website-using-post-method-example/830 хорошие учебные пособия, но @davide также может добавить свои собственные предложения
2. Опыт разработки загрузчика Neembuu. Вы могли бы проверить учебник , который мы написали несколько лет назад.
3. Да, ответ содержит данные, которые вы можете увидеть в gymnasiumleiden.nl/roostersinfoweb/infoweb/index.php после входа в систему.