singlepost

авторизация на vkontakte.ru )) << На главную или назад  

доброго времени суток всем! такой вопрос!
как правильно авторизироваться в соц. сети vkontakte.ru??

вот просниффил данные браузера:

POST /login.php HTTP/1.1
Host: vkontakte.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: //vkontakte.ru/
Cookie: remixchk=5; remixlang=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

email=mail%40mail.ru&pass=xxxxxxxPOST /login.php HTTP/1.1

по сути я эти данные слал и на сервер таким вот кодом:

HTTP := TVKHTTP.Create(nil);
CookieMgr := TVKCookieMgr.Create(nil);

HTTP.HTTPOptions := [hoInProcessAuth, hoKeepOrigProtocol, hoForceEncodeParams];
HTTP.ProtocolVersion := pv1_1;
HTTP.CookieManager := CookieMgr;
HTTP.AllowCookies := True;
HTTP.HandleRedirects := True;
HTTP.Request.Connection := 'keep-alive';
HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
HTTP.Request.Host := 'vkontakte.ru';
HTTP.Request.Accept:='text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
HTTP.Request.AcceptLanguage:='ru,en;q=0.9,ru-RU;q=0.8';
HTTP.Request.Referer := '//vkontakte.ru/index.php';
HTTP.Request.UserAgent := 'Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0';
//HTTP.Request.AcceptEncoding:='gzip,deflate';

PAGE := TStringList.Create;
Data := TStringList.Create;
Friends := TStringList.Create;
friendlist := TStringList.Create;
Data.Add('success_url=');
Data.Add('fail_url=');
Data.Add('try_to_login=1');
Data.Add('email=' + Email_Edit.Text);
Data.Add('pass=' + Password_Edit.Text);
Page.Text := HTTP.Post('//vkontakte.ru/login.php?', Data);
csid := Copy(Page[140], Pos('value=', Page[140]) + Length('value='), Length(Page[140]));
Delete(csid, Pos('>', csid), Length(csid));
CapthchaForm.WWWNavigateJpg('//vkontakte.ru/captcha.php?sid='+csid);
CapthchaForm.ShowModal;
Code := CapthchaForm.CodeEdit.Text;
Data.Add('csid=' + csid);
Data.Add('ccode=' + code);
Page.Text := HTTP.Get('//vkontakte.ru/login.php?success_url=&fail_…=' + EMail_Edit.Text + '&pass=' + Password_Edit.Text + '&csid=' + csid + '&ccode=' + code);
if Pos('Online', Page.Text) <> 0
then begin ShowMessage('Success LogIn');

теперь объясняю:

сервер авторизации в контакте присылает нам кривые кукисы которые браузер с легкостю глотает. в них ошибка(а может и специально так сделали):

Domain=.vkontakte.ru
от куда взялась точка?зачем?ладно…это я легко исправил:

отрывок из VK_CookieMgr.pas
while ACookie.Domain[1] = '.' do ACookie.Domain := Copy(ACookie.Domain, 2, Length(ACookie.Domain) – 1);

в программе из страницы авторизации выдирается некий sid, которые тоже надо постить и по которому получают картинку авториации…картинка как таковая выскаивает не всегда…

внимание вопрос!

почему программа логиниться через раз и почему когда я отсылаю csid и код с картинки всеравно программа не логиниться?
спасибо за внимание..

9 ответов в теме “авторизация на vkontakte.ru ))”

  1. 7
    Сергей Середенин ответил:

    когда логишься пробовал включать чужой компьютер у меня всегда только так логинится)))
    там галочка есть

  2. 6
    Vadim Aliev ответил:

    у меня такая ситуация…логи с пассом заранее введены в

    EMail_Edit и в Password_Edit

    я один раз логинюсь, 2й раз логинюсь на 3й раз выскаивает капча,я кидаю в едит код с капчи и постю данные повторно но с данными капчи…не хочет…но на счет прокси идея хорошая))) спасибо щас попробую поставлю =)))

  3. 5
    Павел Фёдоров ответил:

    вот чекер сам писал может поможет
    //forum.antichat.ru/thread100832.html

  4. 4
    Vadim Aliev ответил:

    тут проблема вот в чем:

    почемуто капча выскакивает когда захочет…на это я проверку сделал:

    if pos(page.text, 'captha.php?') <> 0 then
    begin
    Data.Add('csid=' + csid); // Пихаем в данные csid
    Data.Add('ccode=' + code); // Пихаем капчу
    http.post('//vkontakte.ru/login.php?', Data); // Шлем данные уже с капчей
    end;

    но почемуто даже если я отсылаю и эти данные логин не проходит(((

  5. 3
    Павел Фёдоров ответил:

    если ты три раза подряд не правильно вводишь логин или пасс то появляеться каптча, чот бы её обойти используй прокси

  6. 2
    Павел Фёдоров ответил:

    у меня всё нормально в кукисах ошибок нет!! надо их правильно извлечь и правильно послать писал прогу на ПХП через сокеты проблем не было

  7. 1
    Павел Фёдоров ответил:

    можешь на cURL всю эту бодягу написать ИМХО легче должно быть

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.