Web サイトからのファイルのダウンロードを自動化する必要があります。ファイルのダウンロード ボタンは、提供されたユーザー名とパスワードでログインした後にのみ表示されます。ログインフォームにはさらに 2 つの隠しフィールドがあり、そのうちの 1 つは生成された値を持つ csrf_token_login です。
<input type="hidden" name="csrf_token_login" value="nl9YERDFpecfITb8QwFWneoaefykxp2b" />
ログインとパスワードだけがあれば、これを Java で (java.net.HttpUrlConnection を使用して) コーディングする方法は明らかです (これについては、java.net.URLConnection を使用して HTTP 要求を起動して処理するのに優れた説明があります): POST 要求を送信します。 、Cookie を取得し、後続の要求のためにそれらを設定します。しかし、ログインフォームで csrf_token_login の生成された値を取得し、他の値で送信するにはどうすればよいですか?
ログインページの HttpURLConnection で getInputStream() を使用して読み取ると、csrf 値が得られます。しかし同時に、これにより接続が確立され、データを投稿するための接続プロパティを設定できなくなります。
private HttpURLConnection logUrlCon;
...
BufferedReader logInput = new BufferedReader(new InputStreamReader(logUrlCon.getInputStream()));
... // read and get csrf value OK
logUrlCon.setDoOutput(true); // throws java.lang.IllegalStateException: Already connected
ログインフォームで生成されたこのcsrf_tiken_login値を取得し、それをユーザー名とパスワードとともに投稿する方法はありますか?