Авторизация В Вк Delphi

  • Автор темы Автор темы Sascha
  • Дата начала Дата начала

Sascha

Команда форума
Администратор
Ofline
Авторизация Vk перестала работать не беда вот решение : в uses прописываем RegularExpressions, на форму кидаем 2 х Edit, 2 x Label и Button......

vk.webp
нажимаем на Button далее прописываем код и пользуемся:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  response, lg_h: string;
  RegEx: TRegEx;
  rez: TMatchCollection;
  login,pass: string;
begin
  login:=Edit1.Text;
  pass:=Edit2.Text;
  IdHTTP1.HandleRedirects := true;
  response:= IdHTTP1.Get('http://vk.com/?_fm=index');
  RegEx := TRegEx.Create( 'name="lg_h" value="([a-z0-9]*?)" />', [roIgnoreCase]);
  rez := RegEx.Matches(response);
  lg_h := rez.Item[0].Groups[1].Value;
  response:= IdHTTP1.Get('http://login.vk.com/?act=login&email=' + login + '&pass=' + pass
    + '&lg_h=' + lg_h);
  if pos('выйти', response)>0 then
   Form1.caption:= 'Авторизация ВК прошла успешно!'
  else
   Form1.caption:='Авторизация ВК не прошла'
end;

end.
 

Вложения

  • VK.zip
    VK.zip
    3.8 MB · Просмотры: 20
Авторизация Vk перестала работать не беда вот решение : в uses прописываем RegularExpressions, на форму кидаем 2 х Edit, 2 x Label и Button......

Посмотреть вложение 76
нажимаем на Button далее прописываем код и пользуемся:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  response, lg_h: string;
  RegEx: TRegEx;
  rez: TMatchCollection;
  login,pass: string;
begin
  login:=Edit1.Text;
  pass:=Edit2.Text;
  IdHTTP1.HandleRedirects := true;
  response:= IdHTTP1.Get('http://vk.com/?_fm=index');
  RegEx := TRegEx.Create( 'name="lg_h" value="([a-z0-9]*?)" />', [roIgnoreCase]);
  rez := RegEx.Matches(response);
  lg_h := rez.Item[0].Groups[1].Value;
  response:= IdHTTP1.Get('http://login.vk.com/?act=login&email=' + login + '&pass=' + pass
    + '&lg_h=' + lg_h);
  if pos('выйти', response)>0 then
   Form1.caption:= 'Авторизация ВК прошла успешно!'
  else
   Form1.caption:='Авторизация ВК не прошла'
end;

end.
Авторизацию делал сразу через сайт,а через приложение?
 
Авторизация Vk перестала работать не беда вот решение : в uses прописываем RegularExpressions, на форму кидаем 2 х Edit, 2 x Label и Button......

Посмотреть вложение 76
нажимаем на Button далее прописываем код и пользуемся:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  response, lg_h: string;
  RegEx: TRegEx;
  rez: TMatchCollection;
  login,pass: string;
begin
  login:=Edit1.Text;
  pass:=Edit2.Text;
  IdHTTP1.HandleRedirects := true;
  response:= IdHTTP1.Get('http://vk.com/?_fm=index');
  RegEx := TRegEx.Create( 'name="lg_h" value="([a-z0-9]*?)" />', [roIgnoreCase]);
  rez := RegEx.Matches(response);
  lg_h := rez.Item[0].Groups[1].Value;
  response:= IdHTTP1.Get('http://login.vk.com/?act=login&email=' + login + '&pass=' + pass
    + '&lg_h=' + lg_h);
  if pos('выйти', response)>0 then
   Form1.caption:= 'Авторизация ВК прошла успешно!'
  else
   Form1.caption:='Авторизация ВК не прошла'
end;

end.
Отличный материал! Спасибо!
Написал аналог авторизации на питоне!
https://www.guardianelinks.de/threads/ponjatnaja-avtorizacija-vkontakte-py3-grab.343/
 
Не пашет. Проверил последний пример. Вероятно уже не актуален этот метод.
 
Как буду дома,проверю,если что скину актуальный
 
Только что проверил всё работает
 
Не ожидал получить ответ.
Приятно осознавать, что форум с такой специфической тематикой активно работает.
Дело в том, что я пытался переписать ваш код через synapse. В своё время намаялся с этим Инди. Потом перешёл на synapse и не жалею. 🙂
Тут разница только в том, что редиректы нужно вручную обрабатывать и всё.
В общем всё идёт гладко до момента, когда нужно перейти по ссылке с хешем такого вида: http://vk.com/login.php?act=slogin&to=&s=1&__q_hash=13bb03c128f54600b081807e7900f861
После чего ВК меня выбрасывает. Заголовки пытался максимально повторить.

Единственное, что мне пока удалось - это средствами их API получить свой Token и id.
Можно-ли зная Token и id пользоваться их сервисными.
Мне нужно с моей программы воспользоваться сервисом коротких ссылок: https://vk.com/cc
Без авторизации это сделать нельзя.
 
Не ожидал получить ответ.
Приятно осознавать, что форум с такой специфической тематикой активно работает.
Дело в том, что я пытался переписать ваш код через synapse. В своё время намаялся с этим Инди. Потом перешёл на synapse и не жалею. 🙂
Тут разница только в том, что редиректы нужно вручную обрабатывать и всё.
В общем всё идёт гладко до момента, когда нужно перейти по ссылке с хешем такого вида: http://vk.com/login.php?act=slogin&to=&s=1&__q_hash=13bb03c128f54600b081807e7900f861
После чего ВК меня выбрасывает. Заголовки пытался максимально повторить.

Единственное, что мне пока удалось - это средствами их API получить свой Token и id.
Можно-ли зная Token и id пользоваться их сервисными.
Мне нужно с моей программы воспользоваться сервисом коротких ссылок: https://vk.com/cc
Без авторизации это сделать нельзя.
Если вы хотите внедрять функционал api vk,то вам нужно зайти в документацию Вконтакте,вы можете использавать практически все Вконтакте через апи ,если же вы хотите работать через ссылки,что будет очень долго и усердно,так как время проходит и security разрабатываеться каждый день,будет очень тяжело расшифровывать ссылки и отпровлять по пять запросов
 
Код:
https://oauth.vk.com/token?grant_type=password&scope=nohttps&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=Твой логин &password=Твой пароль
Попробуй так
 
Если вы хотите внедрять функционал api vk,то вам нужно зайти в документацию Вконтакте
Дело в том, что в документации ВК (https://vk.com/dev) я не нашёл возможность пучить доступ к сервису коротких ссылок (https://vk.com/cc), поэтому решил делать через внешние запросы и парсинг.

Этот способ не сработал.
Правда, я экспериментировал через oauth.
Код:
url:='https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+pass;
Вроде-бы этот вариант рабочий.
Через него я получил Токен и айди. Может можно как-то их использовать для получения доступа к нужному мне сервису?
 
чтобы получить доступ к сервису тебе и понадобится Токен и айди.А что за сервис такой?
 
Думаю проблема в том, что я не могу программно отработать этот скрипт:
Код:
<script type="text/javascript">
var _ua = navigator.userAgent;
var locDomain = 'vk.com'.match(/[a-zA-Z]+\.[a-zA-Z]+\.?$/)[0];
if (/opera/i.test(_ua) || !/msie 6/i.test(_ua) || document.domain != locDomain) {
  document.domain = locDomain;
}
parent.__qlClear();
addEvent = parent.addEvent;
vk = parent.vk;
parent.stManager.add(['notifier.js', 'notifier.css'], function() {
  Notifier = parent.Notifier;
    ;(function () {
    var cb = function () {Notifier.init({"queue_id":"events_queue6150884","timestamp":1736653346,"key":"YPYnzriFcnmX4rsuerjYgghr99EofkUjGySlqaAjpERs4drs4hldLQiqXrlXZOqcIu1N","uid":"6150884","version":10,"debug":false,"instance_id":"NzAwNTA0","server_url":"http:\/\/q48.queuev4.vk.com\/im884","frame_path":"http:\/\/q48.queuev4.vk.com\/q_frame.php?7","frame_url":"im884","refresh_url":"http:\/\/vk.com\/notifier.php","fc":{"version":23,"state":{"clist":{"min":true,"x":false,"y":false},"tabs":[],"version":23},"state_hash":"3857493725_2cf8a6fb1b95c28c41"}})}
    if (window.vk && window.vk.loaded) cb(); else addEvent(window, 'DOMContentLoaded load', cb);
  })();
  parent.onLoginDone('/User');
});
</script>
Может знаете, как его отработать. Я не силён в яваскипте. 🙁
 
Можно попробывать делать POST-запросы с кукисами авторизации. ( POST-запрос на vk.com/cc с параметрами act=shorten&link=google.com )
 
Не понял. Уточните.
Код:
POST /cc HTTP/1.1
Host: vk.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://vk.com/cc
Content-Length: 31
Cookie: remixlang=0; remixstid=171490084_63a95c353a6809c4c5; remixflash=19.0.0; remixscreen_depth=24; remixdt=-7200; remixseenads=1; remixrefkey=4111d818f1b856edea; remixfbstate=4f90da74300b791003; remixtst=7a24eb88; remixsid=d298e3e4bdbfb5264794fbfe6de7dc406b421d0d1aec54c80b495
Connection: keep-alive

act=shorten&al=1&link=google.ru

Так будет понятней
 
Назад
Сверху Снизу