ホームページ  >  記事  >  バックエンド開発  >  VIEWSTATE 値と EVENTVALIDATION 値を組み込むことで、Jsoup でのログイン フォーム送信の問題を解決するにはどうすればよいですか?

VIEWSTATE 値と EVENTVALIDATION 値を組み込むことで、Jsoup でのログイン フォーム送信の問題を解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-20 13:34:02932ブラウズ

How to Resolve Login Form Submission Issues with Jsoup by Incorporating VIEWSTATE and EVENTVALIDATION Values?

Jsoup を使用したログイン フォーム送信の問題の解決

正しいログイン資格情報を送信したにもかかわらず、提供されたコードはユーザーの認証に失敗し、ログイン ページが表示されます。

コードに欠けている重要な側面の 1 つは、VIEWSTATEEVENTVALIDATION の値が含まれていることです。これらの値は Web サイトのログインに必要で、最初の GET リクエストの応答から取得できます:

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

これらの値をユーザー名とパスワードとともに POST リクエストに組み込むと、確実にログインが成功します:

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

さらに、GET リクエストと POST リクエストの両方に userAgent フィールドを追加すると、ブラウザがシミュレートされ、手動ログインで受信した応答との一貫性が確保されます。

オプションで、remember me フィールドを有効にできます。次の行を POST リクエストに追加します:

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

以上がVIEWSTATE 値と EVENTVALIDATION 値を組み込むことで、Jsoup でのログイン フォーム送信の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。