JSoup登录超时

时间:2018-10-21 00:33:36

标签: jsoup

我知道过去(很多)都曾问过这种问题,因此,我对该主题的另一个问题感到抱歉,但到目前为止,我所见的任何问题都没有帮助。我正在尝试使用JSoup登录my school gradebook(不幸的是,该成绩簿没有API)。这是我的代码:

首先,对登录页面的GET请求:

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

接下来,对登录页面进行POST请求(包括登录输入,包括隐藏的输入和GET请求中的cookie):

    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时,只有一个cookie(但是那个是会话ID,所以我认为很好)。关于可能出问题的任何想法/如何解决/需要更多信息?

2 个答案:

答案 0 :(得分:0)

注意事项:

  • .data("cmdLogOn", "Sign+In")您尝试使用空格而不是+吗?
  • 尝试将引荐来源网址添加到发布用户数据的请求中:.referer("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
  • 使用浏览器登录时,您还可以使用调试器查看发送了哪些标头。也许Web服务器期望这些标头之一。示例.header("Accept-Encoding", "gzip, deflate")

答案 1 :(得分:0)

我无法弄清楚,因此我移至OkHttpPersistentCookieJar,仅使用JSoup进行解析。