Хочу средствами С++ авторизоватся на мейл.ру, отловить я все заголовки что отправляет мой браузер я составил запрос..
В ответе на него получаю "302 ok"
Ну там маленькая загвоздка, нету строки "location"
Пересмотрел я в браузере что отправил мне сервер,
строку "location" я нашол.
Ну вот не пойму почему когда я запускаю код я ее не получаю? Может куки не получил, и как вообще получать куки с сайтов ?
Пмоготи пожалуйста.
Что отправил мне сервер, когда я захожу через браузер:
Код:
Set-Cookie: t=obLAABAAABAAAAAAAAAAAZAAYMxAcA; expires=Mon, 30 Nov 2009 20:32:18 GMT; path=/; domain=.mail.ru
Set-Cookie: Mpop=1244061138:77524f5950525b41185c515f541c404d:login@mail.ru:; expires=Tue, 01 Sep 2009 20:32:18 GMT; path=/; domain=.mail.ru
Location: http://win.mail.ru/cgi-bin/checkcookie?id=775b4760627d7e7019050210041850575d4a54495a524f5950525b41185c515f541c404d
Код моего клиента:
Код:
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#include <ctype.h>
#define PORT 80
#define SERVERADDR "194.67.57.126" // Адрес сервера
#pragma comment(lib, "Ws2_32.lib") //либа
int main ( int argc, char* argv [ ] )
{
WSADATA wd;
char buff[100000];
char buff2[100000]=
{
"POST /cgi-bin/auth HTTP/1.1\r\n"
"Host: win.mail.ru\r\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9) Gecko/2008051206 Firefox/3.0 (.NET CLR 3.5.30729)\r\n"
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
"Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Referer: http://win.mail.ru/cgi-bin/login\r\n"
"Cookie: Mpop=1244052980:04707c6077015d01190502190a1d0000041850575d4a54495a524f5950525b41185c515f541c404d:aov@mail.ru:; t=obLD1AAAAAAIAAAABAAAAAAAAAAAZAAYMxAcA; mrcu=ED294A236BAD221A30F778B8D75F; c8=TNYmSgAAAAKA3gIAAAAAApAJBAAAAAACgN0CAAAAAAK5dgEAAAAAAsVGAAAAKA1wEAAAAAApF6AQAAAAACYCIBAAAAAAH5UgEAAAAA; c0=P+oHTAAAAAJZdAwAAAAA; p=i9mYAJpP+QAA; VID=1TUY9324cAme\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 79\r\n\r\n"
"page=&post=&login_from=&Login=login&Domain=mail.ru&Password=pass"
};
printf ( "TCP Client \n" ); // ну, тут и так понятно
if ( WSAStartup ( 0x202, &wd ) )
{
printf ( " WSAStart error %d \n ", WSAGetLastError ( ) );
return -1;
}
SOCKET sock ;
sock=socket ( AF_INET, SOCK_STREAM, 0 );
if ( sock < 0 )
{
printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) );
return -1;
}
sockaddr_in dest_addr;
dest_addr.sin_family=AF_INET; //инет коннектинг
dest_addr.sin_port=htons ( PORT ); //порт
HOSTENT *hst; // хост
if( inet_addr(SERVERADDR) != INADDR_NONE )
dest_addr.sin_addr.S_un.S_addr = inet_addr(SERVERADDR);
else if( hst=gethostbyname ( SERVERADDR ) )
( ( unsigned long * ) &dest_addr.sin_addr )[0]=((unsigned long** )hst->h_addr_list)[0][0];
else
{
printf( "invalid address %s \n", SERVERADDR );
closesocket( sock ) ;
WSACleanup();
return -1;
}
if(connect( sock, (sockaddr *)&dest_addr, sizeof(dest_addr) ))
{
printf (" Connect error %d \n ", WSAGetLastError ( ) );
return -1;
}
send( sock, buff2, sizeof(buff2), 0);
recv( sock, buff, sizeof(buff)-1, 0 );
printf("%s",buff);
printf ("Connection with %s succesfully. quit - quit" , SERVERADDR );
return 0;
}