java - 如何使用Jsoup登录HTTPS网站?

标签 java https 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,然后按控制台。 您将看到类似 XHR 完成加载:POST "https://www.tickld.com/ajax/login.php". 的内容。当您发出 POST 请求时,您将其发送到放置在 form 标记的 action 参数中的 URL。 在本例中,不存在这样的 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();

如果没有,那么您可能需要使用一些 headless 浏览器(可以处理 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();

关于java - 如何使用Jsoup登录HTTPS网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30268309/

相关文章:

java - 数学表达式中的单独数字

java - 使用 mp4parser 合并 mp4 剪辑使音频隐藏在视频后面

android - 音频无法通过 HTTPS 在 chrome-android(LG G Pro 2 D838 上的 Kitkat 4.4.2)上播放

java - 如何用它创建一张万花筒照片?

javascript - 如何从http切换到https客户端

android - javax.net.ssl.sslpeerunverifiedexception 没有对等证书

java - 通过Jsoup下载的网页源不等于实际网页源

java - 使用 Jsoup 仅从子节点中选择?

java - 我可以在 Jsoup 中的所有 html text() 元素之间包含空格吗

java - 函数 .contains() 无法按预期方式在 Groovy 中工作