Автоматическое заполнение Python с помощью Mechanize

Может ли кто-нибудь помочь мне или поделиться кодом для автоматического заполнения логина с помощью mechanize (http://wwwsearch.sourceforge.net/mechanize/)? Я хочу создать скрипт на Python, чтобы заходить на мои любимые сайты, когда я его запускаю.

Спасибо!


person user377419    schedule 18.08.2010    source источник
comment
Вы читали документы? wwwsearch.sourceforge.net/mechanize/forms.html   -  person Tim McNamara    schedule 19.08.2010


Ответы (2)


Это поможет вам войти на один сайт и загрузить страницу, например:

import mechanize
br=mechanize.Browser()
br.open('http://www.yourfavoritesite.com')
br.select_form(nr=0) #check yoursite forms to match the correct number
br['Username']='Username' #use the proper input type=text name
br['Password']='Password' #use the proper input type=password name
br.submit()
br.retrieve('https://www.yourfavoritesite.com/pagetoretrieve.html','yourfavoritepage.html')

Этот сценарий предполагает, что ваша форма входа является первой на странице, а имена ввода — Username и Password.
Вы также можете выбрать форму по имени с помощью:

br.select_form(name="thisthing")

Пожалуйста, адаптируйте этот скрипт к странице входа на ваш любимый сайт.
Как отметил AlexMartelli, этот скрипт должен быть обобщен для работы с разными сайтами с некоторыми параметрами конфигурации.

person systempuntoout    schedule 18.08.2010
comment
хм, что вы подразумеваете под номером формы? вы имеете в виду как имя формы в html? и что делает извлечение? <form action="bleh.php" name="thisthing"/> - person user377419; 19.08.2010
comment
еще одна вещь, как я узнаю, удалось ли войти в систему? - person user377419; 19.08.2010
comment
@shorty, вы сможете скачать личную страницу :) - person systempuntoout; 19.08.2010

Каждый из ваших любимых сайтов, вероятно, имеет разные формы (номер формы и имена полей пользователя и пароля), и есть надежда, что вы используете разные имена пользователей и пароли на каждом из них (использование одного и того же пользователя и пароля на многих сайтах означает, что если один из сайтов взломана, ваша личность теперь скомпрометирована «везде» — настоящий беспорядок!).

Итак, вы можете либо жестко закодировать все эти параметры, как в ответе @systempuntoout, либо написать небольшой текстовый файл конфигурации (например, в формате, поддерживаемом ConfigParser) со всей этой информацией для каждого сайта, чтобы вы могли загрузить конфигурацию при запуске вашего скрипта и написать функцию "log_me_in", всего один раз< /em>, который принимает имя сайта в качестве параметра, ищет и использует зависящие от него параметры.

Если у вас есть много "любимых сайтов", так что загрузка всей их информации ощутимо замедляет время запуска, вы можете даже подумать о том, чтобы сохранить эту информацию более разумно (например, в таблице sqlite), чтобы его можно быстро найти только для одного или нескольких сайтов, учитывая их имена в качестве «ключа» для использования.

person Alex Martelli    schedule 18.08.2010