"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver problemas de envío del formulario de inicio de sesión de Jsoup debido a la falta de parámetros VIEWSTATE y EVENTVALIDATION?

¿Cómo resolver problemas de envío del formulario de inicio de sesión de Jsoup debido a la falta de parámetros VIEWSTATE y EVENTVALIDATION?

Publicado el 2024-11-25
Navegar:654

How to Resolve Jsoup Login Form Submission Issues Due to Missing VIEWSTATE and EVENTVALIDATION Parameters?

Solución de problemas de envío del formulario de inicio de sesión de Jsoup

Declaración del problema:

A pesar de utilizar las credenciales de inicio de sesión correctas, el código de Jsoup publicado a continuación no puede iniciar sesión en el sitio web de destino y, en su lugar, muestra el código HTML de la página de inicio de sesión.

public void connect() {

    try {
        Connection.Response loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php")
                .method(Connection.Method.GET)
                .execute();

        org.jsoup.nodes.Document document = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php")
                .data("cookieexists", "false")
                .data("username", "myUsername")
                .data("password", "myPassword")
                .cookies(loginForm.cookies())
                .post();
        System.out.println(document);
    } catch (IOException ex) {
        Logger.getLogger(WebCrawler.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Solución:

Además del nombre de usuario, la contraseña y las cookies, el sitio web de destino requiere dos valores adicionales para iniciar sesión: VIEWSTATE y EVENTVALIDATION. Para obtener estos valores:

Document doc = loginForm.parse();
Element e = doc.select("input[id=__VIEWSTATE]").first();
String viewState = e.attr("value");
e = doc.select("input[id=__EVENTVALIDATION]").first();
String eventValidation = e.attr("value");

Luego, agregue estos valores a la solicitud de publicación (el orden no importa):

org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php").userAgent("Mozilla/5.0")               
            .data("myLogin$myUsername", "MyUsername")
            .data("myLogin$myPassword, "MyPassword")
            .data("myLogin$myLoginButton.x", "22")                   
            .data("myLogin$myLoginButton.y", "8")
            .data("__VIEWSTATE", viewState)
            .data("__EVENTVALIDATION", eventValidation)
            .cookies(loginForm.cookies())
            .post();

Para habilitar la función "Recordarme", agregue:

.data("myLogin$myEnableAutoLogin", "on")

Con estas modificaciones, el inicio de sesión ahora debería realizarse correctamente.

Declaración de liberación Este artículo se reimprime en: 1729401319 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3