[英]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.