java - 为什么我无法使用 jsoup 登录?
问题描述
我正在尝试让 java 登录到网站(不和谐)。
我希望它打开我的浏览器并登录。然后它必须再次注销。
但它不起作用。
我的代码:
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class HttpUrlConnectionExample {
public static void main(String[] args) throws Exception {
Connection.Response loginForm = Jsoup
.connect("https://discordapp.com/app")
.method(Connection.Method.GET)
.execute();
Document doc = loginForm.parse();
String csrf = doc.select("input[name=csrf]").val();
Connection.Response response = Jsoup.connect("https://discordapp.com/app")
.data("email", "myemail")
.data("pasword", "mypass")
.data("login", "loginform")
.data("csrf", csrf)
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.execute();
String body = response.body();
if(body.contains("Welcome")){
System.out.println("Password incorrect!");
} else if(body.contains("Gebruikersnaam werd niet gevonden.")){
System.out.println("Not found username!");
} else {
System.out.println("Login successfully!");
}
}
}
解决方案
jsoup
是一个 HTML 解析器并且没有 javascript 引擎,因此它不能执行任何可能在用户登录之前执行的 javascript。
如果是这种情况,您将不得不求助于支持 javascript 的库。一种,例如 HtmlUnit 或 Selenium。
推荐阅读
- java - Google APIs Java 客户端库中“setApplicationName”的用途是什么?
- javascript - 是否可以将参数从一个 react-native 应用程序传输到另一个 react-native 应用程序?
- javascript - 取消从另一个函数返回的前一个 observable
- isabelle - 为什么这个看似不正确的证明对伊莎贝尔来说是可以的?
- javascript - 即使在刷新页面时也保存侧菜单栏的状态
- jquery - AddClass 不起作用 - 无法定义 | jQuery
- javascript - 在 JQuery 中查找列表的下一个元素 data-id
- javascript - React - Webpack module.exports 需要
- linux - 如果 PSH 有效负载不以特定字节开头,则 IP 表规则丢弃 TCP 数据包和连接
- stored-procedures - 努力在 BigQuery 中运行我的第一个存储过程(受 Felipe Hoffa 在 BigQuery 帖子中的 Easy pivot() 启发的数据透视表)