Jsoup を使用したログイン フォームの送信に関する問題
提供されたコードの問題は、正しいコードを使用しているにもかかわらず、Web サイトに正常にログインできないことにあります。ログイン認証情報。現在、コードはログイン ページを取得していますが、正常なログインの実行に失敗しています。
根本的な問題は、送信プロセスにユーザー名、パスワード、Cookie 以外の追加パラメーターが必要であることです。具体的には、Web サイトには「VIEWSTATE」と「EVENTVALIDATION」の値が必要です。
解決策
この問題を解決するには、これらの追加の値を最初の応答から取得する必要があります。 GET リクエストは POST リクエストに含まれます。次のコードは、これらの値を取得して組み込む方法を示しています。
<code class="java">Document loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php") .method(Connection.Method.GET) .execute() .parse(); String viewState = loginForm.select("input[id=__VIEWSTATE]").first().attr("value"); String eventValidation = loginForm.select("input[id=__EVENTVALIDATION]").first().attr("value"); org.jsoup.nodes.Document 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>
以上がパラメータの欠落による Jsoup でのログイン フォーム送信エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。