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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2012, 18:32   #1
mister-bulb
Новичок
Джуниор
 
Регистрация: 25.06.2012
Сообщений: 5
По умолчанию Авторизация m.vk.com через POST не получается

Код:
const
  URL = 'http://m.vk.com/login?fast=1&hash=&s=0&to=';
var
  loginInfo: TStringList;
  Response: TStringStream;
  error: Boolean;
begin
  error := false;
  loginInfo := TStringList.Create;
  Response := TStringStream.Create('');

  try
    loginInfo.Add('email=номер телефона');
    loginInfo.Add('pass=пароль');
    idHttp.Post(URL, loginInfo, Response);

    MemoChat.Text := MemoChat.Text + Response.DataString;
  except
    error := true;
  end;

  Response.Free;
  loginInfo.Free;
Авторизоваться не выходит, выдаёт просто ту же заглавную страницу с полями для авторизации. Как изменить код?
Свойство AllowCookies в true.

Последний раз редактировалось mister-bulb; 25.06.2012 в 18:52.
mister-bulb вне форума Ответить с цитированием
Старый 25.06.2012, 19:11   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

У меня в программе я вижу, что ссылка для авторизации динамичная, ее надо парсить каждый раз:
Код:
data:=tstringlist.Create;
 data.Add('email='+Facc);
 data.Add('pass='+Fpas);
 StrPage:='';
 try
  StrPage:=HTTP.Get('http://m.vk.com/login');
  StrPage:=HTTP.post(pars('method="post" action="',StrPage,'"'),data);
 except
 end;
Voody вне форума Ответить с цитированием
Старый 25.06.2012, 19:23   #3
mister-bulb
Новичок
Джуниор
 
Регистрация: 25.06.2012
Сообщений: 5
По умолчанию

Основная процедура теперь выглядит так:
Код:
var
  loginInfo: TStringList;
  strInfo: string;
begin
  loginInfo := TStringList.Create;
  
  loginInfo.Add('email=');
  loginInfo.Add('pass=');

  strInfo := '';

  try
    strInfo := idHttp.Get('http://m.vk.com/login');
    strInfo := idHttp.Post(pars('method="post" action="',strInfo,'"'),loginInfo);
    MemoChat.Text := MemoChat.Text + Utf8ToAnsi(strInfo);
  except

  end;

  loginInfo.Free;
Функция pars, как я понял, такая:
Код:
function Pars(st,st_begin,st_end:WideString):WideString;
begin
  if pos(st_begin,st)<>0 then
    Delete(st,1,pos(st_begin,st)+length(st_begin))
  else
  begin
    Pars:='not str pars';
    exit;
  end;

  if pos(st_end,st)<>0 then
    Delete(st,pos(st_end,st),length(st))
  else
  begin
    Pars:='not str pars';
    exit;
  end;
  Pars:=st;
end;
Метод GET проходит без проблем, но там и вообще проблем не может возникнуть.
А вот при POST выдаёт ошибку 403 Forbidden

Последний раз редактировалось mister-bulb; 25.06.2012 в 19:42.
mister-bulb вне форума Ответить с цитированием
Старый 25.06.2012, 19:27   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Код:
function Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  a := Pos(T_, ForS);
  if a = 0 then
    Exit
  else
    a := a + Length(T_);
  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then
    Result := Copy(ForS, 1, b - 1);
end;
+
HTTP.AllowCookies:=true;
HTTP.HandleRedirects:=false;

других особенностей нет
Voody вне форума Ответить с цитированием
Старый 25.06.2012, 19:41   #5
mister-bulb
Новичок
Джуниор
 
Регистрация: 25.06.2012
Сообщений: 5
По умолчанию

Couldn't load SSL Library. Теперь вылетает такая ошибка.
На форумах советуют подключить IdSSLIOHandlerSocketOpenSS, что я и сделал, но теперь такая вот фигня.

Последний раз редактировалось mister-bulb; 25.06.2012 в 19:46.
mister-bulb вне форума Ответить с цитированием
Старый 25.06.2012, 19:49   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Практически полная функция:

Код:
 Http: TIdHttp;
 IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
 IdSocksInfo: TIdSocksInfo;
 data:tstringlist;
 StrPage: string;
begin
 HTTP:=TIdHTTP.Create;
 HTTP.AllowCookies:=true;
 HTTP.HandleRedirects:=false;
 IdSSLIOHandlerSocketOpenSSL:= TIdSSLIOHandlerSocketOpenSSL.Create(http);
 HTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL;  
 Http.ConnectTimeout:=10000;
 Http.ReadTimeout:=10000;
 IdSSLIOHandlerSocketOpenSSL.ConnectTimeout:=10000;
 IdSSLIOHandlerSocketOpenSSL.ReadTimeout:=10000;

 data:=tstringlist.Create;
 data.Add('email='+Facc);
 data.Add('pass='+Fpas);
 StrPage:='';
 try
  StrPage:=HTTP.Get('http://m.vk.com/login');
  StrPage:=HTTP.post(pars('method="post" action="',StrPage,'"'),data);
 except
 end;
Voody вне форума Ответить с цитированием
Старый 25.06.2012, 19:51   #7
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от mister-bulb Посмотреть сообщение
Couldn't load SSL Library.
возможно версии библиотек не те. попробуйте распаковать в папку с программой: http://avtyh.narod.ru/brute/pack.zip
Voody вне форума Ответить с цитированием
Старый 25.06.2012, 20:04   #8
mister-bulb
Новичок
Джуниор
 
Регистрация: 25.06.2012
Сообщений: 5
По умолчанию

Я использовал компонент со схожим названием, но теперь когда попробовал объявить переменную типа TIdSSLIOHandlerSocketOpenSSL, то выдало ошибку, что тип неизвестен. Попробовал чисто наугад подключить IdSSLIOHandlerSocketOpenSSL в раздел модулей, но такого модуля не оказалось, хех.
Этот компонент можно установить? Как называется файл, если это возможно? Delphi 7.
mister-bulb вне форума Ответить с цитированием
Старый 25.06.2012, 20:07   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Возможно у вас версия Indy не свежая. Лучше обновить. Или поставить Delphi 2010 (XE как вариант)
Voody вне форума Ответить с цитированием
Старый 25.06.2012, 20:09   #10
mister-bulb
Новичок
Джуниор
 
Регистрация: 25.06.2012
Сообщений: 5
По умолчанию

Спасибо за помощь.
mister-bulb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на vbulletin (POST) IndomiX Работа с сетью в Delphi 10 19.02.2012 21:11
https авторизация, обычный POST запрос не получается нужна какая дополнительная деталь temkas C# (си шарп) 1 06.12.2011 08:26
Post авторизация fenix19910 C# (си шарп) 0 21.07.2011 21:05
Авторизация на сайтах через IdHTTP не получается в чем ошибка ? gawrilowalex Работа с сетью в Delphi 1 23.06.2011 16:23