2013-09-18 4 views
1

Предположим, у меня есть форма как следующее с некоторым скрытым входом:Запросы на Python - Скрытый ввод, необходимый для POST?

<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> 

Я бы запустить запрос питон 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? Можете ли вы отправить запрос POST, если вы опускаете элементы с атрибутом типа «скрытый»?

Какова цель веб-сайтов, даже имеющие скрытые входы, если их значения устанавливаются в пустой строки, такие как Hidden1 элемента в myForm примере выше.

EDIT - Вторая половина

После этого немного исследований, я заметил, что некоторые скрытые элементы были разными значениями каждый раз, когда я посетил страницу

т.е.

<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-подобную строку в качестве значения

Оказывается, сайт дает мне код на 200 об ошибке при попытке отправить POST с различными значениями, чем эти. Являются ли эти дополнительные меры безопасности для веб-сайта?

.. и ЕСЛИ ТАК, как я могу программно отправлять запросы POST, учитывая значения изменяющихся элементов?

ответ

1

я должна включать скрытые входы в словаре postRequest?

Нет, вы не имеют включить скрытые входы. Нет закона, договора или стандарта, который требует от вас включения каких-либо конкретных элементов ввода.

С другой стороны, если вы не включаете их, то вы делаете что-то другое, чем браузер, и веб-сайт может обратить внимание на это.

Вы можете отправить запрос POST, если опустить элементы со значением атрибута типа «скрытой»?

Да, вы можете. Вы также можете опустить элементы с типом text или button. Как отвечает сайт, это полностью зависит от него.

Какова цель веб-сайтов, даже имеющие скрытые входы, если их значения устанавливаются в пустую строку,

Цель разработчик сайта действительно до него. Вы можете попросить разработчиков веб-сайта, к которому вы пытаетесь подчиниться.

Одна из возможных целей - определить, какая форма выполняет представление.


Являются ли эти дополнительные меры безопасности для веб-сайта?

Опять же, спросите владельцев сайта. Это может быть безопасность, это может быть управление сеансом, это может нести ваши предпочтения.

..и если так, как я могу программно отправлять запросы POST, учет меняющихся значений элементов?

Fetch страницы, содержащая форму, разобрать эту страницу и отправить форму с указанной переменной формой.

+0

Хм, так оно и есть. Я обновил свой вопрос, возможно, вы можете взглянуть. –

+0

Именно то, что я имею в виду: разборе формы страницы. –

Смежные вопросы