доброго времени суток всем! такой вопрос!
как правильно авторизироваться в соц. сети 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 и код с картинки всеравно программа не логиниться?
спасибо за внимание..
13 февраля 2009 в 4:03
когда логишься пробовал включать чужой компьютер у меня всегда только так логинится)))
там галочка есть
12 февраля 2009 в 23:04
у меня такая ситуация…логи с пассом заранее введены в
EMail_Edit и в Password_Edit
я один раз логинюсь, 2й раз логинюсь на 3й раз выскаивает капча,я кидаю в едит код с капчи и постю данные повторно но с данными капчи…не хочет…но на счет прокси идея хорошая))) спасибо щас попробую поставлю =)))
12 февраля 2009 в 17:02
вот чекер сам писал может поможет
//forum.antichat.ru/thread100832.html
12 февраля 2009 в 17:01
тут проблема вот в чем:
почемуто капча выскакивает когда захочет…на это я проверку сделал:
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;
но почемуто даже если я отсылаю и эти данные логин не проходит(((
12 февраля 2009 в 17:01
если ты три раза подряд не правильно вводишь логин или пасс то появляеться каптча, чот бы её обойти используй прокси
12 февраля 2009 в 17:00
у меня всё нормально в кукисах ошибок нет!! надо их правильно извлечь и правильно послать писал прогу на ПХП через сокеты проблем не было
12 февраля 2009 в 17:00
можешь на cURL всю эту бодягу написать ИМХО легче должно быть