Конечная точка для входа в систему?

#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 после входа в систему.