ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как залогинится вконтакт через сокет?
  #1  
Старый 07.12.2008, 20:11
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию Как залогинится вконтакт через сокет?

Пытаюсь делать вот так
Код:
char *data=new char[1024*1024];
char *acce=new char[1024*1024];
char *par=new char[1024*5];
char host[100]="vkontakte.ru";
char user[100]="";
char pass[100]="";
SOCKET s;char *Ip=new char[150];
SOCKADDR_IN adr;
WSADATA wsd;
WSAStartup(MAKEWORD(2,0),&wsd);
hostent *h;
h=gethostbyname(host);
sprintf(Ip,"%d.%d.%d.%d",(unsigned char)h->h_addr_list[0][0],(unsigned char)h->h_addr_list[0][1],(unsigned char)h->h_addr_list[0][2],(unsigned char)h->h_addr_list[0][3]);
adr.sin_family=AF_INET;
adr.sin_addr.s_addr =inet_addr(Ip);
adr.sin_port = htons(80);
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(s,(sockaddr*)&adr,sizeof(adr));
strcpy(par,"success_url=&fail_url=&try_to_login=1&email=");
strcat(par,user);strcat(par,"&pass=");strcat(par,pass);
strcpy(data,"POST /login.php HTTP/1.1\r\n");
strcat(data,"Accept: */*\r\n");
strcat(data,"Referer: http://vkontakte.ru/login.php?u=1\r\n");
strcat(data,"Accept-Language: ru\r\n");
strcat(data,"Content-Type: text/html\r\n");
strcat(data,"User-Agent: Mozilla/4.0");
strcat(data,"Host: vkontakte.ru\r\n");
strcat(data,"Content-Length: ");strcat(data,AnsiString(strlen(par)).c_str());
strcat(data,"\r\n");strcat(data,"Connection: Keep-Alive\r\n");
strcat(data,"Cache-Control: no-cache\r\n");strcat(data,par);
strcat(data,"\r\nConnection: Close\r\n\r\n");
send(s,data,strlen(data),0);
recv(s,acce,1024*1024,0);
В ответ получаю
Код:
HTTP/1.1 400 Bad Request
Server: nginx/0.6.31
Date: Sun, 07 Dec 2008 16:10:38 GMT
Content-Type: text/html
Content-Length: 173
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/0.6.31</center>
</body>
</html>
Возможно я неправильно составил запрос Может кто то подскажет как его правильно составить?
 
Ответить с цитированием

  #2  
Старый 07.12.2008, 20:22
furang
Познающий
Регистрация: 07.04.2007
Сообщений: 88
Провел на форуме:
6406543

Репутация: 48
По умолчанию

Пост параметры кажется передаются в конце http-запроса после \r\n
то есть
Код:
strcpy(par,"success_url=&fail_url=&try_to_login=1&email=");
strcat(par,user);strcat(par,"&pass=");strcat(par,pass);
это в самый конец после
Код:
strcat(data,"\r\nConnection: Close\r\n\r\n");
UPD
А еще надо указывать сервер
то есть
Код:
POST /login.php HTTP/1.1\r\n
не конает. надо
Код:
POST http://vkontakte.ru/login.php HTTP/1.1\r\n

Последний раз редактировалось furang; 07.12.2008 в 20:25..
 
Ответить с цитированием

  #3  
Старый 07.12.2008, 20:30
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от furang  
Пост параметры кажется передаются в конце http-запроса после \r\n
то есть
Код:
strcpy(par,"success_url=&fail_url=&try_to_login=1&email=");
strcat(par,user);strcat(par,"&pass=");strcat(par,pass);
это в самый конец после
Код:
strcat(data,"\r\nConnection: Close\r\n\r\n");
UPD
А еще надо указывать сервер
то есть
Код:
POST /login.php HTTP/1.1\r\n
не конает. надо
Код:
POST http://vkontakte.ru/login.php HTTP/1.1\r\n
Тоесть запрос должен выглядеть примерно так
Код:
POST /login.php HTTP/1.1
Accept: */*
Referer: http://vkontakte.ru/login.php?u=1
Accept-Language: ru
Content-Type: text/html
User-Agent: Mozilla/4.0Host: vkontakte.ru
Content-Length: 70
Connection: Keep-Alive
Cache-Control: no-cache
Connection: Close
success_url=&fail_url=&try_to_login=1&email=lalala@mail.ru&pass=lalala
?
Все равно "Bad Request"

Последний раз редактировалось _nic; 07.12.2008 в 20:47..
 
Ответить с цитированием

  #4  
Старый 07.12.2008, 20:48
furang
Познающий
Регистрация: 07.04.2007
Сообщений: 88
Провел на форуме:
6406543

Репутация: 48
По умолчанию

точнее так
Код:
POST http://vkontakte.ru/login.php HTTP/1.1
Accept: */*
Referer: http://vkontakte.ru/login.php?u=1
Accept-Language: ru
Content-Type: text/html
User-Agent: Mozilla/4.0
Host: vkontakte.ru
Content-Length: 70
Connection: Keep-Alive
Cache-Control: no-cache
Connection: Close

success_url=&fail_url=&try_to_login=1&email=lalala@mail.ru&pass=lalala
кстати прошу обратить внимание что надо следить за Content-Length. он должен равнятся sizeof(str) где str длина строки с переменными и параметрами. Content-Length должно быть не более (иначе дополнится пробелами) и не менее (иначе не все переменные влезут).
А вобще когда я писал подобные проги на сокетах то делал вот как. ставил naviscope, настраивал браузер на работу через него, делал в браузере что надо, а в naviscope перехватывал пакет и уже на его основании писал проги.
 
Ответить с цитированием

  #5  
Старый 07.12.2008, 21:04
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

согласен с предыдущим, что нормально писать с сетевым снифером и геморой теоретически предполагая!
 
Ответить с цитированием

  #6  
Старый 08.12.2008, 02:18
[dei]
Участник форума
Регистрация: 24.11.2008
Сообщений: 205
Провел на форуме:
1123418

Репутация: 362
Отправить сообщение для [dei] с помощью ICQ
По умолчанию

Код:
POST http://vkontakte.ru/login.php HTTP/1.1
Нафига?
Достаточно
Код:
POST /login.php HTTP/1.1
...
Host: vkontakte.ru
это ж HTTP/1.1 , учите матчасть.
 
Ответить с цитированием

  #7  
Старый 08.12.2008, 02:45
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Да что так что сяк, всеравно Bad Request
 
Ответить с цитированием

  #8  
Старый 08.12.2008, 03:03
furang
Познающий
Регистрация: 07.04.2007
Сообщений: 88
Провел на форуме:
6406543

Репутация: 48
По умолчанию

Цитата:
Сообщение от [dei]  
Код:
POST http://vkontakte.ru/login.php HTTP/1.1
Нафига?
Достаточно
Код:
POST /login.php HTTP/1.1
...
Host: vkontakte.ru
это ж HTTP/1.1 , учите матчасть.
Работает и так, и так. так с чего шум то подымать? ты выпендрится сюда пришел или человеку помочь?

В конце запроса должно быть \r\n\r\n то есть еще одна пустая строка. не может не работать.

Последний раз редактировалось furang; 08.12.2008 в 03:07..
 
Ответить с цитированием

  #9  
Старый 08.12.2008, 03:27
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Незнаю у кого что там работает.Но у меня такой код
Код:
char *data=new char[1024*1024];
char *acce=new char[1024*1024];
char *par=new char[1024*5];
char host[100]="vkontakte.ru";
char user[100]="lalalalal@mail.ru";
char pass[100]="lalalala";
SOCKET s;char *Ip=new char[150];
SOCKADDR_IN adr;
WSADATA wsd;
WSAStartup(MAKEWORD(2,0),&wsd);
hostent *h;
h=gethostbyname(host);
sprintf(Ip,"%d.%d.%d.%d",(unsigned char)h->h_addr_list[0][0],(unsigned char)h->h_addr_list[0][1],(unsigned char)h->h_addr_list[0][2],(unsigned char)h->h_addr_list[0][3]);
adr.sin_family=AF_INET;
adr.sin_addr.s_addr =inet_addr(Ip);
adr.sin_port = htons(80);
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(s,(sockaddr*)&adr,sizeof(adr));
strcpy(par,"success_url=&fail_url=&try_to_login=1&email=");
strcat(par,user);strcat(par,"&pass=");strcat(par,pass);
strcpy(data,"POST http://vkontakte.ru/login.php HTTP/1.1\r\n");
strcat(data,"Accept: */*\r\n");
strcat(data,"Referer: http://vkontakte.ru/login.php?u=1\r\n");
strcat(data,"Accept-Language: ru\r\n");
strcat(data,"Content-Type: text/html\r\n");
strcat(data,"User-Agent: Mozilla/4.0");
strcat(data,"Host: vkontakte.ru\r\n");
strcat(data,"Content-Length: ");strcat(data,AnsiString(strlen(par)).c_str());
strcat(data,"\r\n");strcat(data,"Connection: Keep-Alive\r\n");
strcat(data,"Cache-Control: no-cache");//strcat(data,par);
strcat(data,"\r\nConnection: Close\r\n\r\n");
strcat(data,par);strcat(data,"\r\n\r\n");
send(s,data,strlen(data),0);
recv(s,acce,1024*1024,0);
Memo1->Text=AnsiString(acce);
В ответ получает только HTTP/1.1 400 Bad Request
 
Ответить с цитированием

  #10  
Старый 08.12.2008, 03:56
furang
Познающий
Регистрация: 07.04.2007
Сообщений: 88
Провел на форуме:
6406543

Репутация: 48
По умолчанию

Видишь ли в чем дело. То у тебя Connection: Keep-Alive, то Connection: Close. и это в одном запросе.....
Ок. чтоб ты и дальше не мучался специально выкладываю шаблон запроса, который браузер шлет контакту)))

Код:
POST http://vkontakte.ru/login.php HTTP/1.0
User-Agent: Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1
Host: vkontakte.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://vkontakte.ru/index.php
Proxy-Connection: Keep-Alive
Content-Length: 38
Content-Type: application/x-www-form-urlencoded

email=<email>&pass=<pass>
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ