PHP CURL: проблемы при входе в Hotmail


Я потратил на это много времени, и теперь у меня заканчиваются возможности отладки. Если кто-то сталкивался с этой проблемой раньше или даже просто имеет небольшое представление о том, что может пойти не так, пожалуйста, дайте мне знать.

Прежде всего, я использую CURL для посещения этой страницы http://login.live.com/login.srf?id=2&vv=400&lc=1033 Я анализирую все скрытые и не скрытые поля, прикрепляю логин/пропуск, URL-адрес, кодирую все, а затем отправляю эти данные на страницу, на которую указывает форма входа. Затем я пытаюсь найти ошибку "адрес электронной почты/пропуск неверны", и если нет, я предполагаю, что он успешно вошел в систему. Вот поток, который происходит после этого. Первая запись - это ответ страницы "войти" (когда я размещаю на ней все данные).

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 571
Content-Type: text/html; charset=utf-8
Expires: Fri, 08 Jul 2011 09:52:05 GMT
Server: Microsoft-IIS/7.5
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
X-XSS-Protection: 0
Set-Cookie: MSPOK= ; expires=Thu, 30-Oct-1980 16:00:00 GMT;domain=login.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: PPAuth=...cookie goes here...; domain=login.live.com;secure= ;path=/;HTTPOnly= ;version=1
Set-Cookie: PPLState=1; domain=.live.com;path=/;version=1
Set-Cookie: MSPShared=1; expires=Wed, 30-Dec-2037 16:00:00 GMT;domain=login.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: MSPPre= ;domain=login.live.com;path=/;Expires=Thu, 30-Oct-1980 16:00:00 GMT
Set-Cookie: MSPCID= ; HTTPOnly= ; domain=login.live.com;path=/;Expires=Thu, 30-Oct-1980 16:00:00 GMT
Set-Cookie: RPSTAuth=...cookie goes here...; domain=.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: RPSTAuthTime=1310118785; domain=login.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: MSPAuth=...cookie goes here...; domain=.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: MSPProf=...cookie goes here...; domain=.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: MSNPPAuth=...cookie goes here...; domain=.live.com;path=/;HTTPOnly= ;version=1
Set-Cookie: MH=MSFT; domain=.live.com;path=/;version=1
Set-Cookie: MHW=; expires=Thu, 30-Oct-1980 16:00:00 GMT;domain=.live.com;path=/;version=1
Set-Cookie: MHList=; expires=Thu, 30-Oct-1980 16:00:00 GMT;domain=.live.com;path=/;version=1
Set-Cookie: NAP=V=1.9&E=b13&C=0G_duhr_tQKqjDgf383QrDgK2gMYHsFPE_oAbIgZoDUzSr3M7_FXfw&W=1;domain=.live.com;path=/
Set-Cookie: ANON=A=A84CB86...FFFFFFF&E=b6d&W=1;domain=.live.com;path=/
Set-Cookie: MSPVis=$2$9;domain=login.live.com;path=/
Set-Cookie: pres=; expires=Thu, 30-Oct-1980 16:00:00 GMT;domain=.live.com;path=/;version=1
Set-Cookie: LOpt=0; domain=login.live.com;path=/;version=1
Set-Cookie: WLSSC=...cookie goes here...; domain=.live.com;secure= ;path=/;HTTPOnly= ;version=1
Set-Cookie: [email protected]@:@; domain=login.live.com;path=/;version=1
PPServer: PPV: 30 H: BAYIDSLGN1M36 V: 0
Date: Fri, 08 Jul 2011 09:53:04 GMT
Connection: close

<html><head><script type="text/javascript">function rd(){window.location.replace("http://www.hotmail.msn.com/cgi-bin/sbox?t=...&p=...&mkt=EN-US&lc=1033&id=2");}function OnBack(){}</script></head><body onload="javascript:rd();"></body></html></textarea>!!!<textarea>HTTP/1.1 301 Moved Permanently
Content-Length: 546
Content-Type: text/html
Location: http://www.hotmail.msn.com/cgi%2Dbin/sbox/?t=...&p=...&mkt=EN-US&lc=1033&id=2
Server: Microsoft-IIS/6.0
P3P: CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
xxn: 49
Date: Fri, 08 Jul 2011 09:53:04 GMT

HTTP/1.1 301 Moved Permanently
Date: Fri, 08 Jul 2011 09:53:05 GMT
Server: Microsoft-IIS/6.0
P3P: CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
xxn: 16
MSNSERVER: H: DUB102-w16 V: 16.0.1677.630 D: 2011-06-30T23:31:34
Location: http://mail.live.com/default.aspx
Set-Cookie: KVC=...cookie goes here...; domain=.mail.live.com; path=/
Set-Cookie: xid=...cookie goes here...; domain=.msn.com; path=/
Set-Cookie: xidseq=1; domain=.msn.com; path=/
Set-Cookie: LD=; domain=.msn.com; expires=Fri, 08-Jul-2011 08:13:05 GMT; path=/
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: text/html; charset=utf-8
Content-Length: 150

***[according to the normal browser flow, here I should be redirected to the normal hotmail homepage]***

HTTP/1.1 302 Found
Date: Fri, 08 Jul 2011 09:53:05 GMT
Server: Microsoft-IIS/6.0
P3P: CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
xxn: 34
MSNSERVER: H: DUB103-w34 V: 16.0.1677.630 D: 2011-06-30T23:31:34
Location: https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1310118785&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx%3Frru%3Dinbox&lc=1033&id=...&mkt=en-US&cbcxt=mai&snsc=1
Set-Cookie: KSC=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: kr=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: bsc=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: rru=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: prc=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: mt=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: KVC=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Set-Cookie: DWN=; domain=.mail.live.com; expires=Thu, 01-Jan-1970 12:00:01 GMT; path=/
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: text/html; charset=utf-8
Content-Length: 354

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 210
Content-Type: text/html; charset=utf-8
Expires: Fri, 08 Jul 2011 09:52:06 GMT
Server: Microsoft-IIS/7.5
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
X-XSS-Protection: 0
Set-Cookie: MSPRequ=lt=...&id=...&co=1; path=/;version=1
Set-Cookie: [email protected]@:@; domain=login.live.com;path=/;version=1
PPServer: PPV: 30 H: BAYIDSLGN1M44 V: 0
Date: Fri, 08 Jul 2011 09:53:06 GMT
Connection: close

<html><head><script type="text/javascript">function rd(){window.location.replace("http://mail.live.com/default.aspx?rru=inbox");}function OnBack(){}</script></head><body onload="javascript:rd();"></body></html>


***[from now on if I go to default.aspx?rru=inbox, it will redirect me to the previous login.live.com which will again redirect me to this default.aspx and so on in an endless loop]***

Каким-то образом hotmail удается войти в бесконечный цикл, и мне не удалось понять, почему. Все файлы cookie сохраняются в текстовом файле и действительно убедитесь, что CURL действительно записывает в него. Я даже попытался изучить его шаг за шагом и, кажется, обнаружил, что KVC файлы cookie не сохраняются. Однако, когда я вручную проанализировал его из заголовков и вставил в файл cookie CURL, это ничего не изменило: я все еще получал этот ошибочный поток.

Author: Eugene, 2011-07-08

1 answers

Скорее всего, сайт использует токен CSRF, чтобы помешать вам сделать это. Вместо того, чтобы пытаться имитировать вход через веб-сайт, а затем удалять контакты со страницы Hotmail, используйте Messenger Connect REST API. Он поддерживает чтение объектов контактов из Hotmail.

Чтобы получить коллекцию объектов контактов с помощью API Messenger Connect REST, сделайте запрос GET со следующими параметрами.

https://apis.live.net/v5.0/me/contacts?access_token=yourApiKey

Это будет верните все контакты в формате JSON, который вы можете легко проанализировать с помощью json_decode, например, do

$contacts = json_decode(
    file_get_contents(
        'https://apis.live.net/v5.0/me/contacts?access_token=yourApiKey'
    )
);
 1
Author: Gordon, 2011-07-08 12:21:35