Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan Isu Penyerahan Borang Log Masuk Jsoup Kerana Parameter VIEWSTATE dan EVENTVALIDATION Hilang?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-20 13:17:30211semak imbas

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>

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>

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>

Untuk mendayakan ciri "Ingat Saya", tambah :

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

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!

Kenyataan:
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