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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2014, 21:29   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию Авторизация ВК через Synapse

Всем доброго времени суток! Пытаюсь сделать авторизация в ВК, все вроде получается, и кукисы принял, и ссылку специальною принимаю, вот только не получаю страницы, как авторизованный пользователь.
Код:
var
body:TStringlist;
data,data2:TStringstream;
s:string;
begin
body:=tstringlist.Create;
data:=TStringstream.create('');
data2:=TStringstream.create('');
http.UserAgent:='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36 OPR/25.0.1614.35';
http.MimeType:='application/x-www-form-urlencoded';
data.WriteString('role=al_frame&expire=&captcha_sid=&captcha_key=&_origin=https%3A%2F%2Fvk.com&ip_h=b019427e895e108d0f&email=************&pass=*********');
http.Document.LoadFromStream(data);
if http.HTTPMethod('POST','https://login.vk.com/?act=login') then
begin
Memo1.Lines.Add('Отправка запроса. Ответ сервера');
      Memo1.Lines.Add('-----Cokies-----');
      Memo1.Lines.add(http.Cookies.Text);
      Memo1.Lines.Add('-----Headers-----');
      Memo1.Lines.add(http.Headers.Text);
      Memo1.Lines.Add('-----HTML CODE-----');
      http.Document.SaveToStream(data2);
      memo1.Lines.Add(data2.DataString);
    if pos('Location:',http.Headers.Text)>0 then
    begin
    s:=http.Headers.Text;
    delete(s,1,pos('Location:',s)+9);
    s:=copy(s,1,pos(#$D#$A,s));
    edit1.Text:=s; // специальная ссылка
    end;
end;
freeandnil(st);
freeandnil(data);
freeandnil(data2);
freeandnil(body);
Прошу прощения за код, просто это пока примерочная
В общем 2 вопроса как правильно загружать страницы с кукисами и др.?
И как получать при этом тело страницы?
Заранее благодарен.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 28.10.2014, 14:30   #2
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

1. HTTPS надо включать принудительно + бросать в доступную для прилы папку две DLL
2. "ip_h" - вообщет имеет имеет изменяемое значение
3. "Прошу прощения за код, просто это пока примерочная" вообщет это не "примерочная" а "честно стыренный в нете код" ибо мне он на глаза не раз попадался
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 28.10.2014, 17:03   #3
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
HTTPS надо включать принудительно + бросать в доступную для прилы папку две DLL
Цитата:
все вроде получается, и кукисы принял, и ссылку специальною принимаю
то есть я запустил приложения и авторизовался, а это значит, я DLL вроде, как и кинул
Цитата:
"ip_h" - вообщет имеет имеет изменяемое значение
Цитата:
просто это пока примерочная
Цитата:
"Прошу прощения за код, просто это пока примерочная" вообщет это не "примерочная" а "честно стыренный в нете код" ибо мне он на глаза не раз попадался
Seriously!?

В общем, забил я на synapse, сделал через indy. Следите за руками
Первое что нам нужно это именно Indy не ниже 10.5.8, но я использовал Indy 10.6.1.5201 скачать можно на офф сайте или здесь.
Второе нужны библиотеки openssl. Можно скачать также на офф сайте или здесь
Инструкция по обновлению здесь
Дело осталось за малым, кидаем на форму idhttp, IdCookieManager, IdSSLIOHandlerSocketOpenSSL.
В инспекторе объектов в свойствах idhttp находим CookieManager и выбираем IdCookieManager, также IOHandler выбираем IdSSLIOHandlerSocketOpenSSL.
Дело осталось за кодом
Код:
var
post:TStringList;
begin
post:=TStringlist.Create;
post.Add('email=***************@mail.ru'); //Логин
post.Add('pass=*****************'); //Пароль
memo1.Lines.Add(Utf8ToAnsi(http.Post('https://login.vk.com/?act=login&_origin=http://m.vk.com&ip_h=b019427e895e108d0f&role=pda&utf8=1',post))); //ip_h как указано выше надо находить самому
freeandnil(post);
end;
Вот, в общем, то и все.
Всем удачи!
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Synapse. Авторизация ВК Afftar Работа с сетью в Delphi 10 18.05.2012 15:33
СМС через сайт и Synapse xakkkkker Работа с сетью в Delphi 1 14.11.2011 09:44
Авторизация в WordPress (synapse) Bright-rider Общие вопросы Delphi 5 18.06.2011 11:07
Авторизация synapse проблема с location Евгений79 Работа с сетью в Delphi 8 29.05.2011 08:40