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» -part.

 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 и установил значение для входа . Анализируя поток TCP с Wireshark, данные POST действительно структурированы так, как должны. Однако кажется, что механизация возится с моим urlencoding (я уже присвоил значения специально для кодировки, которую использует веб-сайт). Например, мое имя пользователя содержит Å, которое я присвоил URL% C5. Однако, когда он отправляется с механизацией, он отображается как% 25C5. Как остановить механизацию от изменения строк?

EDIT: Я понял, что вместо того, чтобы бороться с механизацией, я просто не мог бы перенести мои строки перед отправкой. Дело закрыто.

    One Solution collect form web for “Python механизирует вход на сайт”

    Механизатор, похоже, все равно убирает струны, поэтому нет смысла бороться с ним. Это окончательное решение (очевидно, не синтаксически обоснованное, но, надеюсь, вы получите эту идею).

     import mechanize self.browser = mechanize.Browser() self.browser.open(self.url) self.browser.select_form(name="login") self.browser["login_nick"] = self.username self.browser["login_pwd"] = self.password self.browser.new_control("HIDDEN", "action", {}) control = self.browser.form.find_control("action") control.readonly = False self.browser["action"] = "login" self.browser.method = "POST" self.browser.action = self.url response = self.browser.submit() 
      Python - лучший язык программирования в мире.