繁体   English   中英

如何使用Jsoup登录HTTPS网站?

[英]How to log in to an HTTPS website with Jsoup?

我最近对网络爬虫感兴趣,因此决定尝试Jsoup。 我不确定如何使用它登录网站。 我看到了另一篇有关它的文章,但无法拼凑出如何做。

我一直在尝试使用网站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();

但是无论我做什么,都不会登录该站点,只会带我进入登录页面。

登录由ajax处理。 我正在使用chrome,所以这就是我所做的。 尝试从浏览器通过表单登录。 按F12,然后按Console。 您将看到类似此XHR finished loading: POST "https://www.tickld.com/ajax/login.php". 发出POST请求时,将其发送到位于form标记的action参数中的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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM