Что нового

Как получить список писем в почте?

Qurt

Новичок
Сообщения
8
Репутация
0
Здравствуйте.
Делаю get запрос к mail.ru,чтобы получить куки,авторизуюсь, потом надо увидеть страницу с письмами в ящике.Читал справку http://autoit-script.ru/threads/neoficialnyj-faq-autoit.3925/#post_inet_4 по запросам не совсем понял.Как получить письма?


Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "https://mail.ru", False)
$oHTTP.SetRequestHeader("User-Agent", "User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0")
$oHTTP.SetRequestHeader("Referer", "https://mail.ru") 
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") 
$oHTTP.Send("captchasnet_captcha_content");                    отправляем данные и делаем запрос на куки
$HeaderResponses = $oHTTP.GetAllResponseHeaders()
$resp=$oHTTP.ResponseText
FileWrite("text.html", $resp)
FileWriteLine("cookie.txt", $HeaderResponses);                       получили куки
Sleep(200)
$oHTTP.Open('POST', 'https://mail.ru')
$oHTTP.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$oHTTP.SetRequestHeader('Cookie', $HeaderResponses) ; добавим куки
$oHTTP.Send('[email protected]&password=sdfyfb67j') ; передаем данные логин  и пароль; здесь ошибка !
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
Sleep(200)
$oHTTP.Open('GET', 'https://e.mail.ru/messages/inbox/') ;
$oHTTP.SetRequestHeader('Cookie', $HeaderResponses) ; добавим куки
$oHTTP.Send()
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
FileWrite("text1.html", $sHTML) ; получаем страницу  писем в ящике
Сообщение автоматически объединено:

Такой вариант без ошибки,но авторизации нет:
Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1") 
 $oHTTP.Open("GET", "https://mail.ru", False)
 $oHTTP.SetRequestHeader("User-Agent", "User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0")
 $oHTTP.SetRequestHeader("Referer", "https://mail.ru")  
 $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")  
 $oHTTP.Send("captchasnet_captcha_content"); отправляем данные и делаем запрос на куки 
 $HeaderResponses = $oHTTP.GetResponseHeader('Set-Cookie');
 $resp=$oHTTP.ResponseText 
 FileWriteLine("cookie.txt", $HeaderResponses); получили куки 
 Sleep(200)
 $oHTTP.Open('POST', 'https://mail.ru') 
 $oHTTP.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;
 $oHTTP.SetRequestHeader('Cookie', $HeaderResponses) ; добавим куки
 $oHTTP.Send('[email protected]&password=sdf78T') ; передаем данные логин  и пароль
  $sHTML = $oHTTP.ResponseText  
 Sleep(200) 
 $oHTTP.Open('GET', 'https://e.mail.ru/messages/inbox/') ; 
 $oHTTP.SetRequestHeader('Cookie', $HeaderResponses) ; добавим куки
 $oHTTP.Send('') 
 $sHTML = $oHTTP.ResponseText
 FileWrite("text1.html", $sHTML) ; получаем страницу  писем в ящике
 
Последнее редактирование:

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
А не проще подключаться через POP3 или IMAP к самому почтовому серверу для получения письма?
 
Автор
Q

Qurt

Новичок
Сообщения
8
Репутация
0
Спасибо за ответ,но нужен не обязательно почтовый ящик,а любой сайт.Поэтому не подойдёт.
А какие библиотеки при get/post нужны,не подскажите?В целом много вопросов на этом сайте просмотрел,по идее всё правильно.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Спасибо за ответ,но нужен не обязательно почтовый ящик,а любой сайт
Так не получится. У каждого сайта отличаются передаваемые параметры. Они защищаются от прямых запросов посредством CSRF токенов. Как раз таки запросы к почтовым серверам более универсальны, т.к. имеют четкие правила подключения описанные в RFC.
 
Автор
Q

Qurt

Новичок
Сообщения
8
Репутация
0
В википедии написано,что нет необходимости защищать от CSRF,если изменяться на странице ничего не будет.Так у меня просто посмотреть данные.
"Спецификация протокола HTTP/1.1 определяет безопасные методы запросов, такие как GET, которые не должны изменять данные на сервере. Для таких запросов, при соответствии сервера спецификации, нет необходимости применять защиту от CSRF."

Какие библиотеки в данном методе подключения используются:
#Include <WinAPI.au3>
#include <IE.au3>
...?
Сейчас вопрос в шапке все ошибки убрать.


В целом немного разобрался.Не хватает сессии id и phpid. Только как они выглядят,если в коде страницы даже фразы нет PHPSESSID и hashLoginPassword.
PHPSESSID получаем из Set-Cookie ,т.е. первая строка d59f7817cb4c05c83f7ccf07e72822a581576122444 ?
Сообщение автоматически объединено:

Medic84, спасибо за ответы.Немного разобрался.
 
Последнее редактирование:
Верх