Я пытаюсь войти на веб-сайт с помощью Python и Mechanize, однако, У меня проблемы, когда я пытаюсь заставить данные POST вести себя так, как я хочу.
По сути, я хочу воспроизвести это с помощью Mechanize и Python:
wget --quiet --save-cookies cookiejar --keep-session-cookies --post-data "action=login&login_nick=USERNAME&login_pwd=PASSWORD" -O outfile.htm http://domain.com/index.php
Форма выглядит так:
<login POST http://domain.com/index.php application/x-www-form-urlencoded
<TextControl(login_nick=USERNAME)>
<PasswordControl(login_pwd=PASSWORD)>
<CheckboxControl(login_auto=[1])>
<SubmitButtonControl(<None>=) (readonly)>>
Установка соответствующих значений и отправка формы не является проблемой, но при этом не учитывается часть "action = login".
response = self.browser.open(self.url+"/index.php")
self.browser.select_form(name="login")
self.browser["login_nick"] = self.encoded_username
self.browser["login_pwd"] = self.encoded_password
self.browser.method = "POST"
response = self.browser.open(self.browser.submit())
print (response.read())
Теперь вопрос в том, как добавить часть action = login
?
Edit : Хорошо, поэтому я добавил скрытое поле с именем action и установил значение login . Анализируя поток TCP с помощью Wireshark, данные POST действительно структурированы так, как должны. Однако, похоже, что Mechanize возится с моим urlencoding (я уже закодировал значения специально для кодировки, которую использует веб-сайт). Например, мое имя пользователя содержит символ Å, который я закодировал как% C5. Как мне запретить механизировать изменение строк?
РЕДАКТИРОВАТЬ: Я понял, что вместо того, чтобы бороться с механизацией, я мог бы просто не urlencode мои строки перед их отправкой. Дело закрыто.