Python механизировать вход на веб-сайт

Я пытаюсь войти на веб-сайт с помощью 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 мои строки перед их отправкой. Дело закрыто.

5
задан Tommy Brunn 19 November 2010 в 15:32
поделиться