Что нового

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

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,590
Репутация
341
А не проще подключаться через POP3 или IMAP к самому почтовому серверу для получения письма?
 
Автор
Q

Qurt

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

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Спасибо за ответ,но нужен не обязательно почтовый ящик,а любой сайт
Так не получится. У каждого сайта отличаются передаваемые параметры. Они защищаются от прямых запросов посредством 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, спасибо за ответы.Немного разобрался.
 
Последнее редактирование:
Верх