Время ожидания входа в JSoup - PullRequest
0 голосов
/ 21 октября 2018

Мне известно, что такого рода вопросы задавались в прошлом (очень часто), поэтому я сожалею о еще одном вопросе на эту тему, но ничего, что я видел, пока не помогло.Я пытаюсь войти в мой школьный дневник , используя JSoup (к сожалению, нет API для журнала успеваемости).Вот мой код:

Сначала GET-запрос к странице входа в систему:

    Connection.Response loginGet = Jsoup.connect("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
        .method(Connection.Method.GET)
        .execute();

Затем POST-запрос к странице входа (с входами для входа, включая скрытые, и файлами cookie иззапрос GET):

    Connection.Response login = Jsoup.connect("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
        .method(Connection.Method.POST)
        .cookies(loginGet.cookies())
        .data("AuthType", "Student")
        .data("FormType", "Login")
        .data("DistrictID", "3000005")
        .data("Username", "username")
        .data("Password", "password")
        .data("cmdLogOn", "Sign+In")
        .execute();

Наконец, запрос GET на страницу оценок:

    Document grades = Jsoup.connect("https://student.cps.k12.il.us/pc/ParentStudentGrades.aspx")
        .cookies(login.cookies())
        .get();

Последний запрос дает мне страницу входа в систему и ошибку о том, как он вышел из меняиз-за тайм-аута, который, я думаю, может означать, что он входит в систему нормально, но срок действия файла cookie истекает немедленно.Кроме того, когда я вхожу через Chrome, есть несколько файлов cookie, но в JSoup есть только один (но тот, который является идентификатором сеанса, поэтому я думаю, что это нормально).Любые идеи о том, что может пойти не так / как это исправить / нужна дополнительная информация?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я не могу понять это, поэтому я перешел на OkHttp и PersistentCookieJar , и просто использую JSoup только для анализа.

0 голосов
/ 21 октября 2018

Примите во внимание:

  • .data("cmdLogOn", "Sign+In") Вы пробовали пробел вместо +?
  • Попробуйте добавить реферер в запрос, где вы отправляете данные пользователя POST: .referer("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
  • Когда вы входите в систему с помощью браузера, вы также можете видеть с помощью отладчика, какие заголовки отправляются.Возможно, веб-сервер ожидает один из этих заголовков.Пример .header("Accept-Encoding", "gzip, deflate")
...