Ваша реализация выглядит нормально ... и должна работать.
Должно быть отправлено правильное значение cookies
, но я вижу это как случай, когда сайт фактически не регистрирует вас.
Как вы можете сказать, что он не отправляет cookies
или может быть cookies
, который вы получаете, не тот, который аутентифицирует вас.
Используйте: response.info()
, чтобы увидеть заголовки ответов, чтобы увидеть, какие куки вы получаете на самом деле.
Возможно, сайт не регистрирует вас, потому что:
Имеется проверка на User-agent
, которую вы не устанавливаете, поскольку некоторые сайты открываются из 4 основных браузеров только для запрета доступа к ботам.
Сайт может искать какое-то специальное скрытое поле формы, которое вы, возможно, не отправляете.
1 совет:
from urllib import urlencode
# Use urlencode to encode your data
data = urlencode(dict(username='testuser', password=md5encode("testpassword")))
response = opener.open("http://site.com/login", data)
Более того, здесь 1 странная вещь:
- Вы md5 кодируете свой пароль перед отправкой. (Strange)
- Обычно это делается сервером перед сравнением с базой данных.
- Это возможно, только если
site.com
реализует md5 в javascript.
- Это очень редкий случай, поскольку только 0,01% веб-сайтов могут это сделать.
- Убедитесь, что это может быть проблемой, и вы предоставляете хешированную форму, а не реальный пароль для сервера.
- Итак, сервер снова вычислил бы md5 для вашего хеша md5.
Выезд .. !!
:)