如何使用Jsoup登录HTTPS网站?

时间:2015-05-15 20:35:34

标签: java https jsoup

我最近对webcrawlers感兴趣并决定尝试Jsoup。我不确定如何使用它登录网站。我看到了另外一篇关于它的SO文章,但却无法拼凑出如何做到这一点。

我一直在尝试浏览网站www.tickld.com,登录网站是“https://www.tickld.com/signin”。

我不确定我是否正确使用Jsoup(我确定这是主要原因),如果错误是.jks,或者我输入了错误信息,我不知道真的看到如何测试代码的哪一部分失败。

        System.setProperty("javax.net.ssl.trustStore", "filePath\\keystore.jks");

        Connection.Response loginForm = Jsoup.connect("https://www.tickld.com/signin")
                .method(Connection.Method.GET).execute();

        Document document = Jsoup.connect("https://www.tickld.com/signing")
                .data("l_username", "myUsername")
                .data("l_password", "myPassword")
                .cookies(loginForm.cookies())
                .post();

但无论我在做什么,它都没有登录网站,只是带我去登录页面。

1 个答案:

答案 0 :(得分:4)

登录由ajax处理。我使用的是铬,所以这就是我所做的。 尝试从浏览器通过表单登录。按F12,然后按控制台。 您会看到类似XHR finished loading: POST "https://www.tickld.com/ajax/login.php".的内容。当您发出POST请求时,可以将其设置为action标记的form参数中的网址。 在这种情况下,不存在这样的url,因为它是由javascript处理的。

试试这个,看它是否有效。

Document document = Jsoup.connect("https://www.tickld.com/ajax/login.php")
                .data("l_username", "myUsername")
                .data("l_password", "myPassword")
                .cookies(loginForm.cookies())
                .post();

如果它没有,那么你可能需要使用一些无头浏览器(可以处理js执行),如selenium webdriver。

<强>更新

Connection.Response login = Jsoup.connect("https://www.tickld.com/signin")
                                .data("l_username", "myUsername")
                                .data("l_password", "myPassword")
                                .method(Connection.Method.POST)
                                .execute();

Document document = Jsoup.connect("http://www.tickld.com/user/chosimbaaaa")
                .cookies(login.cookies())
                .get();
相关问题