Security

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Security » Скрипты » Скрипт,исходник Авторизация ВК на Delphi


Скрипт,исходник Авторизация ВК на Delphi

Сообщений 1 страница 3 из 3

1

Скрипт,исходник Авторизация ВК на Delphi

Код:
//В uses:
//IdHTTP, IdSSLOpenSSL, HTTPApp

//Юзать так:
//remixsid = VKLogin('логин', 'пароль');
//если логпасс верны, в переменной remixsid  будут нужные нам кукисы
//в ином случае (неверный логпасс\капча) переменная будет пустой

//чтобы лазить в ВК авторизованным, нужно:
//IdHTTP1.Request.CustomHeaders.Text := 'Cookie: '+remixsid;
//IdHTTP1.Get('http://vk.com/id1');


function VKLogin(login, pass: string): string;
var
cookies: string;
TIdHTTP1: TIdHTTP;
IOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
result := '';
TIdHTTP1 := TIdHTTP.Create(nil);
TIdHTTP1.ReadTimeout := 20000;
TIdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0';
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
TIdHTTP1.IOHandler := IOHandler;
try
  TIdHTTP1.Get('https://login.vk.com/?act=login&email='+httpENCODE(login)+'&pass='+httpENCODE(pass));
except
    try
      TIdHTTP1.Get(TIdHTTP1.Response.Location);
    except
      if pos('remixsid=', TIdHTTP1.Response.RawHeaders.Text)<>0 then begin
        cookies := TIdHTTP1.Response.RawHeaders.Text;
        Delete(cookies, 1, pos('Set-Cookie: remixsid=', cookies) + length('Set-Cookie: remixsid=') -1);
        result := 'remixsid='+Copy(cookies, 1, pos(';', cookies) -1)+';';
      end;
    end;
end;
IOHandler.Free;
TIdHTTP1.Free;
end;

Динамически создаем компоненты IdHTTP и TIdSSLIOHandlerSocketOpenSSL.
IdHTTP — для отправки запросов по протоколу http.
TIdSSLIOHandlerSocketOpenSSL — дабы IdHTTP работал и по httpS-соединениях (https://login.vk.com/?act=login&email=..)

Настраиваем TIdHTTP(время ожидания ответа от сервера, юзерагент, SSL)

Отправляем запрос на авторизацию:
TIdHTTP1.Get('https://login.vk.com/?act=login&email='+httpENCODE(login)+'&pass='+httpENCODE(pass));

Ловим редирект и переходим по нему:
TIdHTTP1.Get(TIdHTTP1.Response.Location);

Блоки
try
//
except
//
end;
для того, чтобы софт не отображал сообщения с ошибками, например у IdHTTP редиректы выключены, но при переходе по ссылке сервер попытается нас редиректить — произойдёт ошибка, после вывода которой, код, который ниже кода, в котором произошел екскепшн, не выполнится

Если пара логпасс правильные, то в заголовках ответа TIdHTTP будет remixsid
только он нам и нужен, дабы лазить по ВК с аккаунта)

Затем проверяем наличие символов 'remixsid=' в заголовках ответа сервера, если есть — вытаскиваем

И освобождаем память
IOHandler.Free;
TIdHTTP1.Free;

Что именно, собственно говоря, непонятного? rolleyes
Если что не понятно — спрашивай.

UPD:
Пардон, забыл.

Чтобы IdHTTP мог работать по httpS соединениях, одного компонента TIdSSLIOHandlerSocketOpenSSL мало, нужны еще две библиотеки:
http://vk.com/doc39666491_200611055 (ssleay32.dll)
http://vk.com/doc39666491_200611007 (libeay32.dll)

Помести их в папку с .exe проекта и все будет работать.

Теги: Скрипт,исходник,дефли,delphi,vk

2

А воот за это большое спасибо. Гугл не смог помочь. Хоть тут нашел.

3

Спасибо давно искал


Вы здесь » Security » Скрипты » Скрипт,исходник Авторизация ВК на Delphi


Рейтинг форумов | Создать форум бесплатно