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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2013, 10:44   #1
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию Авторизация ВК

Всем привет)
Хотел поинтересоваться хочу написать бота для приложение ВК, и хотел бы узнать как сделать вход в ВК через программу и вывод окна приложения в программу. Заранее спасибо.
nefakt вне форума Ответить с цитированием
Старый 13.03.2013, 10:55   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как же ты бота собрался написать если даже входить не умеешь?

POST, GET запросы (библиотеки типа Synapse или Indy).
Сниффер (одно из многочисленных приложений для браузера или Fiddler), чтобы узнать какие собственно запросы надо отправлять.
Может быть парсинг HTML для доставания каких-то данных, ссылок.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.03.2013, 11:52   #3
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Ну авторизация у меня такая в ВК
Код:
procedure TForm2.Button4Click(Sender: TObject);
var vkontakteavtorizacija,otvet:tstringlist;
begin
vkontakteavtorizacija:=TStringList.Create;
otvet:=TStringList.Create;
try
idhttp1.Get('http://vkontakte.ru');
vkontakteavtorizacija.Add('email='+edit5.Text);
vkontakteavtorizacija.Add('pass='+edit6.Text);
otvet.Text:=idhttp1.Post('http://login.vk.com/?act=login',vkontakteavtorizacija);
finally
vkontakteavtorizacija.free;
otvet.free;
end;
end;
А как вывести сразу не весь сайт ВК а именно окно приложения ?
nefakt вне форума Ответить с цитированием
Старый 13.03.2013, 22:33   #4
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
Сообщение от nefakt Посмотреть сообщение
А как вывести сразу не весь сайт ВК а именно окно приложения ?
Как это понять? Какого приложения?
Lardes вне форума Ответить с цитированием
Старый 13.03.2013, 23:04   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А зачем выводить окно приложения, если Вы пишите бота? Вот и пишите на низком уровне, эмулируя пакеты игры.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.03.2013, 12:08   #6
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Как это понять? Какого приложения?
Написать хочу для приложения Город мертвых что бы он сам заходил на босса бил его забирал награду и выходил с босса. И Потом повторялось все определенное количество раз.

Цитата:
Сообщение от BDA Посмотреть сообщение
А зачем выводить окно приложения, если Вы пишите бота? Вот и пишите на низком уровне, эмулируя пакеты игры.
А можно по подробней как организовать отправление. Может что почитать или небольшой набросок исходника если есть можете скинуть с отправкой пакетов на сервер. Заранее спасибо.
nefakt вне форума Ответить с цитированием
Старый 14.03.2013, 12:27   #7
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
А можно по подробней как организовать отправление.
Качаешь HttpAnalyzerStdV7, и снифаешь что шлется.
Попробуй для начала просто отправить другу сообщение в ЛС, потом уже берись за приложения
Ни и вот http://www.programmersforum.ru/showthread.php?t=38803
bakanaev вне форума Ответить с цитированием
Старый 14.03.2013, 12:43   #8
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от nefakt Посмотреть сообщение
Ну авторизация у меня такая в ВК
Код:
procedure TForm2.Button4Click(Sender: TObject);
var vkontakteavtorizacija,otvet:tstringlist;
begin
vkontakteavtorizacija:=TStringList.Create;
otvet:=TStringList.Create;
try
idhttp1.Get('http://vkontakte.ru');
vkontakteavtorizacija.Add('email='+edit5.Text);
vkontakteavtorizacija.Add('pass='+edit6.Text);
otvet.Text:=idhttp1.Post('http://login.vk.com/?act=login',vkontakteavtorizacija);
finally
vkontakteavtorizacija.free;
otvet.free;
end;
end;
А как вывести сразу не весь сайт ВК а именно окно приложения ?
А Вы уверены что это работает?))))
Вот рабочий вариант (с поддержкой РУ символов);
Код:
function UrlEncode(S : AnsiString) : String;
var
  I : Integer;
  c:   PChar;
begin
  Result := '';
  for I := 1 to Length(S) do begin

    if  S[I]  in ['0'..'9', 'A'..'Z', 'a'..'z'] then
      Result := Result + S[I]
    else       Result := Result + '%' + IntToHex(Ord(S[I]), 2);

  end;
end;

//Логинемся
    IdHTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0';
    html:=IdHTTP.Get('http://vk.com/');

    data:=TStringList.Create;
    data.Add('act=login');
    data.Add('role=al_frame');
    data.Add('expire=');
    data.Add('captcha_sid=');
    data.Add('captcha_key=');
    data.Add('_origin=http%3A%2F%2Fvk.com');
    data.Add('ip_h='+IsolateText_Mini(html,'ip_h: ''',''''));
    data.Add('email='+Copy(account,1,Pos(':',account)-1));
    data.Add('pass='+ UrlEncode(Copy(account,Pos(':',account)+1,Length(account))));

   try
    IdHTTP.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    IdHTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
    IdHTTP.Request.AcceptEncoding:='gzip, deflate';
    IdHTTP.Request.Referer:='http://vk.com/';
    IdHTTP.Request.Connection:='keep-alive';
    IdHTTP.HTTPOptions:= IdHTTPOptions;
    IdHTTP.Post('https://login.vk.com/?act=login',data);
   except
    IdHTTP.Request.ContentType:='';
    html:=IdHTTP.Response.Location;
    IdHTTP.Get(html);
   end;


    IdHTTP.HTTPOptions:= IdHTTPOptions+[hoForceEncodeParams];
   try
    IdHTTP.Request.Referer:=html;
    IdHTTP.Get('http://vk.com/');
   except
     try
      html:=IdHTTP.Get(IdHTTP.Response.Location);
     except   html:=IdHTTP.Get(IdHTTP.Response.Location);          end;
    user_id:=IsolateText_Mini(html,'"user_id":',',');
   end;
  if user_id = '' then  Raise BAD_ACCOUNT.Create('BAD_ACCOUNT'); 
//Залогинелись!
bakanaev вне форума Ответить с цитированием
Старый 14.03.2013, 15:18   #9
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Ну я написал по этой статье авторизацию http://www.programmersforum.ru/showthread.php?t=38803

И вроде входит после авторизации в Memo выходит код страницы после авторизации и по нему видно там сразу пишется Моя страница , Мои друзья в плоть до приложений которые в той же колонки идут.
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
params, responseres:tstringlist;
begin
params:=TStringlist.Create;
responseres:=TStringList.Create;
try
  params.Add('email='+Edit1.Text);
  params.Add('pass='+Edit2.Text);
  memo1.Lines.Text:=idHttp1.Post ('http://login.vk.com/?act=login',params) ;
  if Pos ('logout', responseres.Text)>0 then
  ShowMessage('Авторизовались!');
finally
params.Free;
responseres.Free;
end;
end;
Сейчас пробую через HttpAnalyzer ловить пакеты пару уже увидел после моих действий в приложении. Осталось разобраться как в программу вписать что бы она слала пакеты на сервер.
nefakt вне форума Ответить с цитированием
Старый 15.03.2013, 14:31   #10
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Подскажите как правильно оформить POST запрос такого вида

Вот как я пробовал но не получается его отправить
Код:
procedure TForm2.Button7Click(Sender: TObject);
var
  LoginInfo: TStringList;
  Response: TStringStream;
begin
  try
    LoginInfo := TStringList.Create;
    Response := TStringStream.Create('');
    LoginInfo.Add('name=bossHit');
    LoginInfo.Add('id=16');
    LoginInfo.Add('offerId=16055925');
    LoginInfo.Add('ownerId=96950594');
    LoginInfo.Add('ident=body');
    IdHTTP1.Post('http://vkontakte.zombie.progrestar.net/rpc/',LoginInfo,Response);
    Showmessage(Response.DataString);
  finally
    begin
      Response.Free;
      LoginInfo.Free;
    end;
  end;
  end;
Заранее спасибо.

Последний раз редактировалось nefakt; 15.03.2013 в 15:02.
nefakt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация Pearl777 Работа с сетью в Delphi 13 29.03.2013 00:32
Авторизация в VK :D bakanaev Работа с сетью в Delphi 3 04.12.2012 11:16
Авторизация trad C++ Builder 3 13.01.2011 01:27
Обычная авторизация или авторизация на уровне браузера? calugin Безопасность, Шифрование 0 13.01.2011 00:34
авторизация fAtliNg Работа с сетью в Delphi 6 14.08.2010 20:14