Bagaimana untuk Menyelesaikan Isu Penyerahan Borang Log Masuk Jsoup Kerana Parameter VIEWSTATE dan EVENTVALIDATION Hilang?

Mary-Kate Olsen
Lepaskan: 2024-10-20 13:17:30
asal
209 orang telah melayarinya

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

Menyelesaikan Masalah Penyerahan Borang Log Masuk Jsoup

Pernyataan Masalah:

Walaupun menggunakan bukti kelayakan log masuk yang betul, kod Jsoup dipaparkan di bawah gagal melog masuk ke tapak web sasaran, sebaliknya memaparkan kod HTML halaman log masuk.

<code class="java">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);
    }
}</code>
Salin selepas log masuk

Penyelesaian:

Selain nama pengguna, kata laluan dan kuki, tapak web sasaran memerlukan dua nilai tambahan untuk log masuk: VIEWSTATE dan EVENTVALIDATION. Untuk mendapatkan nilai ini:

<code class="java">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");</code>
Salin selepas log masuk

Kemudian, tambahkan nilai ini pada permintaan siaran (perintah tidak penting):

<code class="java">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();</code>
Salin selepas log masuk

Untuk mendayakan ciri "Ingat Saya", tambah :

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Salin selepas log masuk

Dengan pengubahsuaian ini, log masuk kini sepatutnya berjaya seperti yang diharapkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Penyerahan Borang Log Masuk Jsoup Kerana Parameter VIEWSTATE dan EVENTVALIDATION Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!