成功登录并未向我提供访问其他页面所需的cookie(使用Jsoup)

时间:2015-08-23 06:21:49

标签: java cookies login web-scraping jsoup

我正在尝试通过编程接口(使用带有Jsoup的Java)登录网站并保存响应cookie,以便将其传递给以下请求。但登录后,响应标题中没有cookie:(

我确实设法成功登录,但响应标头中没有Cookie。出于调试目的,我从Chrome浏览器登录并使用chrome网络选项卡检查响应标头,然后在我单击“登录”按钮后,它成功登录到索引页面,但响应标头中没有任何cookie。我知道我需要cookie才能访问需要登录的其他页面,因为他们的请求标题有一个名为“SESSION ...”的cookie,我从未在响应标题中收到过该cookie。

有人请帮我在这里找出问题吗?我已经发布了以下登录代码。这是网站www.lib.uts.edu.au

Connection.Reponse res = Jsoup.connect(url)
            .data("username", id
                    , "password", password
                    , "lt", ltVal
                    , "_eventId", "submit"
                    , "sso_submit", "Sign In"
                    , "rememberMe", "true")
            .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2")
            .cookies(cookies)
            .method(Method.POST)
            .followRedirects(true)
            .execute();

1 个答案:

答案 0 :(得分:3)

我认为您正在查看错误的呼叫,通常在之前的登录呼叫(加载登录表单的呼叫)中设置cookie。

如果你尝试这段代码:

    //This url loads the login form
    Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/auth/login?service=https%3A%2F%2Fwww.lib.uts.edu.au%2Fcas%3Fcas_load_iframe%3D1%26destination%3Ddashboard&iframe=true")
            .timeout(300000)
            .userAgent("Mozilla/5.0")
            .method(Connection.Method.GET).execute();

    System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));

你会看到类似的东西:

JSESSIONID=E16B98E972FFF05E9091453C01779E67

我希望你能找到你正在寻找的会话cookie,只需记住在登录和成功通话中使用该cookie。

---编辑---

还有另一个uri设置了一个SSESS012 ... cookie,然后重定向到我在原始答案中提到的url,请试试这个:

    //Try this other url
    Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/cas?destination=dashboard&cas_load_iframe=1")
            .timeout(300000)
            .userAgent("Mozilla/5.0")
            .method(Connection.Method.GET).execute();

    System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));
    System.out.println("SSESS012...=" + response.cookies().get("SSESS012ea49d58f199a67a953e1500684490"));

现在你会看到类似的东西:

JSESSIONID=5466DCD5601415175514AA88FEC967A0
SSESS012...=DfL4tW0xOdfu_9Op52b-z3El3CNG2xxOYZdruuVfWH0

我希望这就是你所需要的:)