Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2010, 09:20   #1
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
Радость И снова Вконтакт :)

Доброго времени суток всем программистам!

Пишу что-то типа клиента для вконтакта, просто для себя.
Третий день тыкаюсь с авторизацией, прочитал все темы про вконтакт на этом форуме, рабочего ответа не нашел.

Скачал Http Analyzrer, отловил запросы браузера, попытался сделать то же самое с программой.
Итак, авторизация шла в три запроса:

1.
Код:
op=a_login_attempt
url: http://vkontakte.ru/login.php
2.
Код:
 act=login
   success_url=
   fail_url=;
   try_to_login=1
   to=
   vk=
   email=mymail@ya.ru
   pass=mypass
   expire=
url: http://login.vk.com

3.
Код:
s= {cod}
   op=slogin
   redirect=1
   expire=0
   to=
   fail_url=
   try_to_login=1
   to=
   request_method=post
{cod} - это хеш, куки или еще что, длинный код и постоянно меняется.
url: http://vkontakte.ru/login.php
redirect: /mynick

Вот код моей 'программы':
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  data:TStringList;
  page:String;
begin
  http.AllowCookies:=true;
  http.CookieManager:=CooM;
  http.HandleRedirects:=true;
//шаг 1
  data :=TStringList.Create;
  data.Add('op=a_login_attempt');
  Page:= http.Post('http://vkontakte.ru/login.php', data);
  data.Free;

//шаг 2
  data :=TStringList.Create;
  data.Add('act=login');
  data.Add('success_url=');
  data.Add('fail_url=');
  data.Add('try_to_login=1');
  data.Add('to=');
  data.Add('vk=');
  data.Add('email=mymail@ya.ru');
  data.Add('pass=mypass');
  data.Add('expire=');
  Page:= http.Post('http://login.vk.com/', data);
  data.Free;

// шаг 3
  data :=TStringList.Create;
  data.Add('s=');
  data.Add('op=slogin');
  data.Add('redirect=1');
  data.Add('expire=0');
  data.Add('to=');
  data.Add('fail_url=');
  data.Add('try_to_login=1');
  data.Add('to=');
  data.Add('request_method=post');
  Page:= http.Post('http://vkontakte.ru/login.php', data);
memo1.text:=http.get('http://vkontakte.ru/profile.php');
  data.Free;
end;
И так, нужно: в последнем шаге в 's' каким-нибудь образом добавить то, что нужно (хеш или куки), как это сделать, я не знаю.

И второе, в http analyzer'е видно, что шаг 3 выполняется бесконечно,
идёт редирект
с
http://vkontakte.ru/login.php?u=1&to=cHJvZmlsZS5waHA-
на profile.php
и обратно.
Если запретить редиректы, вылетает ошибка 302 и страница не грузится.

Delphi 2009.
Помогите, пожалуйста!

Последний раз редактировалось fezilk24; 08.06.2010 в 09:39.
fezilk24 вне форума Ответить с цитированием
Старый 08.06.2010, 10:40   #2
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
По умолчанию

наверное, нужно как то переменной "s" присвоить куки.

подскажите, пожалуйста, как это сделать
fezilk24 вне форума Ответить с цитированием
Старый 08.06.2010, 13:28   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

третий шаг не бесконечен, если все верно то он вас и оставит на странице профиля.
а вы пробовали анализировать ответ сервера, а не только заголовки?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.06.2010, 14:05   #4
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
Восклицание

Цитата:
Сообщение от fezilk24 Посмотреть сообщение
Третий день тыкаюсь с авторизацией, прочитал все темы про вконтакт на этом форуме, рабочего ответа не нашел.
1. Или вы не глянули все темы про авторизацию вконтакте...
2. Или вы просто не умеете читать...
3. Или вы вообще не искали...
4. Или, я даже незнаю, что еще может быть...

ТЕМА В КОТОРОЙ РАЗОБРАЛИ АВТОРИЗАЦИЮ ВКОНТАКТЕ!!!

P.S.: Прям слов, блин, не хватает на этих людей... ОДНИ МАТЫ В ГОЛОВЕ!
W0LF вне форума Ответить с цитированием
Старый 08.06.2010, 14:14   #5
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
По умолчанию

W0LF, ОНО НЕ РАБОТАЕТ!!
сказал же - читал. все темы разбирал, вставлял код, разбирал, компилил.
Пепел Феникса, вроде всё верно, но получается, что бесконечен. И в итоге - путая страница. А когда после этого хочу Get'ом получить страницу, выкидывает на страницу входа.
fezilk24 вне форума Ответить с цитированием
Старый 08.06.2010, 14:17   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Ну так у трёх людей заработало, обратитесь к ним в приват.
W0LF вне форума Ответить с цитированием
Старый 08.06.2010, 14:20   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы анализируете ответ от сервера?(а то я замечал только про заголовки)
там JS редирект. в котором и есть все адреса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.06.2010, 18:09   #8
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
По умолчанию

W0LF, спасибо, без ваших бесполезных сообщений я бы ну никак не справился.

Пепел Феникса, я конечно извиняюсь, но я не такой профессионал, а только новичок и поэтому как и что анализировать - не знаю. Подскажите, пожалуйста
fezilk24 вне форума Ответить с цитированием
Старый 08.06.2010, 18:25   #9
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Код той темы у меня скомпилировался и успешно авторизировался, так же в той же теме нашел ссылку, первых 2 варианта авторизации тоже успешно сработали, так что думайте...
W0LF вне форума Ответить с цитированием
Старый 08.06.2010, 19:12   #10
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
По умолчанию

А теперь попробуйте в любом из тех способов:

Memo1.Text := http1.get('http://vkontakte.ru');

и выкинет на главную страницу.

Или я туплю, тогда извиняюсь и прошу помощи
fezilk24 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить сообщение вконтакт mish@ Работа с сетью в Delphi 13 16.05.2010 18:29
Не могу войти вконтакт. Евгений_22 Помощь студентам 7 04.03.2010 23:39
MDIChild снова и снова... Siber_Dec Общие вопросы Delphi 2 13.12.2009 03:24
Снова эпидемия vasek123 Свободное общение 56 03.12.2009 15:35