3

次のような非表示の入力を含むフォームがあるとします。

<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 サイトの目的は何ですか。Hidden1myForm

編集 - 後半

少し調べてみたところ、ページにアクセスするたびにいくつかの非表示要素の値が異なることに気付きました

すなわち

<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リクエストを送信するにはどうすればよいですか?

4

1 に答える 1

2

非表示の入力を postRequest 辞書に含める必要がありましたか?

いいえ、非表示の入力を含める必要はありません特定の入力要素を含めることを要求する法律、条約、または標準はありません。

一方、それらを含めない場合は、ブラウザーとは異なることを行っていることになり、Web サイトがそれに気付く可能性があります。

type 属性値が「hidden」の要素を省略した場合、POST リクエストを送信できますか?

はい、できます。textタイプがorの要素を省略することもできますbutton。ウェブサイトがどのように応答するかは、完全にそれ次第です。

値が EMPTY 文字列に設定されている場合、非表示の入力を持つ Web サイトの目的は何ですか?

ウェブサイト開発者の目的は、実際には彼ら次第です。送信しようとしている Web サイトの開発者に尋ねることができます。

考えられる目的の 1 つは、どのフォームが送信を行っているかを識別することです。


これらは Web サイトの追加のセキュリティ対策ですか?

繰り返しますが、ウェブサイトの所有者に尋ねてください。セキュリティかもしれないし、セッション管理かもしれないし、あなたの好みを伝えるかもしれません。

..そしてIF SO、要素の値の変化を考慮して、プログラムでPOSTリクエストを送信するにはどうすればよいですか?

フォームを含むページを取得し、そのページを解析して、指定されたフォーム変数を使用してフォームを送信します。

于 2013-09-18T20:20:19.820 に答える