Форум сайта python.su
Всем привет! подскажите пожалуйста, как пройти авторизацию на сервисе маил.ру, что бы получить список писем?
я пробую вот так, но мне не совсем понятно что дальше делать с куками
import urllib.parse, http.client
useragent = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
auth = urllib.parse.urlencode({'page':'','post':'','login_from':'','Login':'testmail977','Domain':'mail.ru','Password':'testmail'})
conn = http.client.HTTPConnection('auth.mail.ru')
conn.request('POST', '/cgi-bin/auth', auth, useragent)
print(conn.getresponse().read().decode('utf-8'))
conn.close()
<html>
<head><title>Redirect to http://win.mail.ru/cgi-bin/checkcookie?id=79630a010b0f5c5f190502190a1d00071c03014f6a5d5e465e07070907061e0974711e4d5c4b455d505e590e0206155a58585c184a47&user=testmail977&domain=mail.ru&page=start</title></head>
<body><a href="http://win.mail.ru/cgi-bin/checkcookie?id=79630a010b0f5c5f190502190a1d00071c03014f6a5d5e465e07070907061e0974711e4d5c4b455d505e590e0206155a58585c184a47&user=testmail977&domain=mail.ru&page=start">http://win.mail.ru/cgi-bin/checkcookie?id=79630a010b0f5c5f190502190a1d00071c03014f6a5d5e465e07070907061e0974711e4d5c4b455d505e590e0206155a58585c184a47&user=testmail977&domain=mail.ru&page=start</a></body>
</html>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://win.mail.ru/cgi-bin/checkcookie?id=79630a010b0f5c5f190502190a1d00071c03014f6a5d5e465e07070907061e0974711e4d5c4b455d505e590e0206155a58585c184a47&user=testmail977&domain=mail.ru&page=start">here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.41 Server at auth.mail.ru Port 80</ADDRESS>
</BODY></HTML>
Офлайн
Вам нужно обрабатывать HTTP-редиректы, авторизоваться у вас получилось.
Офлайн
а покажи пожалуйста как обрабатывать на этом примере, а то я уже использую и urllib.request.Request который как бы сам должен идти по редиректу, но на страничку с письмами все равно не попадаю
import urllib.parse, http.cookiejar
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
useragent = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
data = urllib.parse.urlencode({'page':'','post':'','login_from':'','Login':'testmail977','Domain':'mail.ru','Password':'testmail'})
data = data.encode('utf-8')
request = urllib.request.Request('http://e.mail.ru/cgi-bin/login', data, useragent)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
Офлайн
Я пользуюсь urllib2, обычно вот так:
openers = [urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(),
urllib2.HTTPSHandler(),
urllib2.HTTPCookieProcessor(cookie)]
opener = urllib2.build_opener(*openers)
Офлайн
Спасибо большое за помощь, но больше интересует вариант через http.client для Python3
Офлайн
Под рукой 3 нет.
Но там должно быть что-то подобное.
Офлайн