首页 > 解决方案 > 为什么我无法使用 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!");          
        }

    }
}

标签: javaloginjsoup

解决方案


jsoup是一个 HTML 解析器并且没有 javascript 引擎,因此它不能执行任何可能在用户登录之前执行的 javascript。

如果是这种情况,您将不得不求助于支持 javascript 的库。一种,例如 HtmlUnit 或 Selenium。


推荐阅读