次のような非表示の入力を含むフォームがあるとします。
<form id="myForm" method="post" action="http://www.X.Y/index.php?page=login>
<input type="hidden" name="Hidden1" value="" />
<input type="hidden" name="Hidden2" value="abcdef" />
<input type="hidden" name="Hidden3" value="1234" />
<input type="text" name="firstTextBox" value=""/>
<input type="button" name="clickButton" value="OK"/>
</form>
次の方法で python POST リクエストを実行します。
import requests
s = requests.Session()
postRequest = {'Hidden1': '',
'Hidden2': 'abcdef',
'Hidden3': '',
'firstTextBox': 'Typed in first text box',
'clickButton': 'OK'
}
s.auth = HttpNtlmAuth(username, password)
s.post(url, data=manufacturingRequest)
私の質問は、隠し入力をpostRequest
辞書に含める必要があったのでしょうか? type 属性値が「hidden」の要素を省略した場合、POST リクエストを送信できますか?
上記の例の要素のように、値がEMPTY stringに設定されている場合、非表示の入力を持つ Web サイトの目的は何ですか。Hidden1
myForm
編集 - 後半
少し調べてみたところ、ページにアクセスするたびにいくつかの非表示要素の値が異なることに気付きました
すなわち
<input type="hidden" name="__REQUESTDIGEST" id="__REQUESTDIGEST" value="0xEB8842A77FE88CA990D2EA0D4BAA0392C13FCEF3DCF3250EBF575B90C03BFBC9AD4D61180DA81DF7B09144BBB04BBFF1565C2ADEE650CCC3D81B149034E711A4,18 Sep 2013 19:48:18 -0000" />
タイムスタンプがある
としても
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="SOME+VERY+LONG+RSA+STRING">
値としてRSAのような文字列がありました
これらとは異なる値で POST を送信しようとすると、サイトは 200 エラー コードを返します。これらは Web サイトの追加のセキュリティ対策ですか?
..そしてIF SO、要素の値の変化を考慮して、プログラムでPOSTリクエストを送信するにはどうすればよいですか?