簡體   English   中英

如何在Java中提交具有隱藏的具有生成值的csrf_token_login字段的html登錄表單

[英]How in Java to submit html logon form that has hidden csrf_token_login field with generated value

我需要自動從網站下載文件。 只有提供了用戶名和密碼的登錄后,文件下載按鈕才會出現。 在登錄表單中,還有兩個隱藏字段,其中一個是具有生成值的csrf_token_login:

<input type="hidden" name="csrf_token_login" value="nl9YERDFpecfITb8QwFWneoaefykxp2b" />

如果我只有登錄名和密碼( 使用Java.net.URLConnection觸發並處理HTTP請求對此有很好的解釋),那么很清楚如何在Java中使用Java(使用java.net.HttpUrlConnection)編寫此代碼:提交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值並將其與用戶名和密碼一起發布?

讀取登錄頁面內容並使用正則表達式提取數據。 您的隱藏字段具有非常獨特的形式(具有唯一的名稱等),因此非常適合基於正則表達式的數據提取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM