Найти - Пользователи
Полная версия: [Python] авторизация на mail.ru
Начало » Python для новичков » [Python] авторизация на mail.ru
1
D1ma
Всем привет! подскажите пожалуйста, как пройти авторизацию на сервисе маил.ру, что бы получить список писем?
я пробую вот так, но мне не совсем понятно что дальше делать с куками
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&amp;user=testmail977&amp;domain=mail.ru&amp;page=start">here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.41 Server at auth.mail.ru Port 80</ADDRESS>
</BODY></HTML>
s0rg
Вам нужно обрабатывать HTTP-редиректы, авторизоваться у вас получилось.
D1ma
а покажи пожалуйста как обрабатывать на этом примере, а то я уже использую и 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'))
s0rg
Я пользуюсь urllib2, обычно вот так:
openers = [urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(),
urllib2.HTTPSHandler(),
urllib2.HTTPCookieProcessor(cookie)]
opener = urllib2.build_opener(*openers)
D1ma
Спасибо большое за помощь, но больше интересует вариант через http.client для Python3
s0rg
Под рукой 3 нет.
Но там должно быть что-то подобное.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB