Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18

IdHTTP авторизация ВКонтакте

15.12.2015, 19:10. Показов 2347. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

компилятор Embarcadero RAD Studio XE7

Добавил на форму компоненты
IDHTTP1, IdSSLIOHandlerSocketOpenSSL1, IdCookieManager1, связал их между собой в инспекторе объектов

Хочу авторизоваться на сайте ВКонтакте.

Делаю так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TStringList *SL= new TStringList;
 
IdHTTP1->CookieManager= IdCookieManager1;
 
IdHTTP1->AllowCookies= true;
 
String Url = "https://login.vk.com/?act=login";
       SL->Add("email="+Login->Text);
       SL->Add("pass="+Password->Text);
 
 
try
    {
      MemoPage->Text= IdHTTP1->Post(Url,SL);
    }
catch(EIdException &E)   // Ловим исключения Indy
    {
       ShowMessage("Ошибка:\n""+E.Message+""");
    };
 
delete SL;
Но не получается - вылезает ошибка "could not load ssl library "

Закинул libeay32.dll и ssleay32.dll в windows\system32 - не помогло
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2015, 19:10
Ответы с готовыми решениями:

IdHTTP авторизация
Добрый день! Коспонент TIdHTTP (у меня назван IdHTTP2) Подскажите пожалуйста, как с его помощью на сайте mamba.ru 1)...

idHTTP компонент,авторизация
Уже много было написано про авторизацию,но законченного описания так и не получилось найти.Не могли бы подсказать как сделать так,что это...

IdHTTP Авторизация на сайте
Решил по изучать IdHTTP. Для этого попробовал сделать авторизацию на mail.ru Скачал плагин для Firefox, но как и куда что засовывать...

14
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,022
15.12.2015, 19:21
C++
1
2
3
TIdHTTP *HTTP = new TIdHTTP(NULL);
TIdSSLIOHandlerSocketOpenSSL *ssl = new TIdSSLIOHandlerSocketOpenSSL(NULL);
HTTP->IOHandler = ssl;
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
16.12.2015, 02:06  [ТС]
Пробовал - не помогает...=(

Правда...зачем ? Если компоненты брошены на форму, имеют названия и связаны с IdHTTP1 в инспекторе объектов?

Добавлено через 7 минут
Прописал вот так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TStringList *SL= new TStringList;
 
IdHTTP1->CookieManager= IdCookieManager1;
IdHTTP1->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
 
IdHTTP1->AllowCookies= true;
 
String Url = "http://login.vk.com/?act=login";
       SL->Add("email="+Login->Text);
       SL->Add("pass="+Password->Text);
 
try
    {
      MemoPage->Text= IdHTTP1->Post(Url,SL);
    }
catch(EIdException &E)   // Ловим исключения Indy
    {
       ShowMessage("Ошибка:\n""+E.Message+""");
    };
 
delete SL;
Добавлено через 4 часа 1 минуту
И все равно авторизация не происходит. Может кто в курсе - почему?

Добавлено через 3 минуты
Ошибка "could not load ssl library " исчезла после переустановки Embarcadero
Но, авторизация все равно завершается ошибкой...

Пробовал также такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
       TStringList *params = new TStringList;
       TStringList *responseres = new TStringList;
       params->Add("email="+Login->Text);
       params->Add("pass="+Password->Text);
       MemoPage->Lines->Text=IdHTTP1->Post("http://login.vk.com/?act=login",params) ;
 
 
 
       if (Pos("logout", responseres->Text)>0)
       {
                ShowMessage("Авторизовались!");
       }
       else
       {
                ShowMessage("Не верные данные!");
       }
все равно не авторизоваться. Логин и пароль верные...
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,022
16.12.2015, 17:47
Используй программы вроде Http Analyzer, чтобы понять, куда, что и как передается.
Можешь еще здесь [Программа] Проверка баланса (Ростелеком) посмотреть пример реализации авторизации.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  String title = "Проверка баланса (lk.rt.ru)";
  Caption = title;
  DWORD start = GetTickCount();
  sets->Click();
 
  try
  {
    TIdHTTP *HTTP = new TIdHTTP(NULL);
    TMemoryStream *MS  = new TMemoryStream;
    TIdSSLIOHandlerSocketOpenSSL *ssl = new TIdSSLIOHandlerSocketOpenSSL(NULL);
    TStringList *SL = new TStringList;
//  TRegExpr *RegExpr = new TRegExpr;
    HTTP->HandleRedirects = 1;
    HTTP->IOHandler = ssl;
 
    for (int i = 0; i < 5; i++)
      ValueListEditor->Strings->ValueFromIndex[i] = " ";
 
    String s1, s2, temp = "";
    if ((Trim(Login->Text) != "") && (Trim(Password->Text) != ""))
    {
    SL->Add("clientType=WEB_CLIENT");
    SL->Add("action=login");
    SL->Add("login="+Login->Text);
    SL->Add("passwd="+Password->Text);
    SL->Add("rememberMy=true");
    HTTP->Request->Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    HTTP->Request->UserAgent = "Mozilla Firefox 39.0";
    HTTP->Post("https://lk.rt.ru/serverLogic/login", SL, MS);
    MS->Position = 0;
    SL->LoadFromStream(MS);
    Memo->Text = UTF8ToString(SL->Text);
 
    s1 = "sessionKey":"", s2 = ""}";
    temp = DataSearch(Memo, s1, s2, 0, 0);
 
//  RegExpr->Expression = "(sessionKey":")(.*?)("})";
//  if (RegExpr->Exec(Memo->Text))
//    temp = RegExpr->Match[2];
//  else
    if (temp == "")
      MessageBox(Application->Handle, "Возможно, неправильно введен логин или пароль.", "Ошибка", MB_OK+MB_ICONWARNING);
    }
 
    if (temp != "")  // нет ошибок
      if ((Trim(Login->Text) != "") && (Trim(Password->Text) != ""))
    {
    HTTP->Request->CustomHeaders->Text = "Cookie: sessionHashKey=" + temp + ";";
    HTTP->Get("https://lk.rt.ru/?setOld=1", MS);
    MS->Position = 0;
    SL->LoadFromStream(MS);
    Memo->Text = UTF8ToString(SL->Text);
 
    s1 = "displayNum":"", s2 = "","alias";
    temp = DataSearch(Memo, s1, s2, 0, 0);
    ValueListEditor->Strings->ValueFromIndex[0] = " " + temp + (temp == "" ? "услуга не привязана / отсутствует" : "");  // лицевой счет
    ValueListEditor->Strings->ValueFromIndex[4] = " " + DataSearch(Memo, s1, s2, 1, 0);  // логин
 
 
    s1 = "accounts":[{"id":", s2 = ","number":"" + temp;
    SL->Clear();
    SL->Add("account=" + DataSearch(Memo, s1, s2, 0, 0));
    HTTP->Post("https://lk.rt.ru/serverLogic/getAccountInfoOpmz", SL, MS);
    MS->Position = 0;
    SL->LoadFromStream(MS);
    Memo->Text = UTF8ToString(SL->Text);
 
    s1 = "balance":", s2 = ","calcType";  // баланс
    ValueListEditor->Strings->ValueFromIndex[2] = " " + String(StrToInt64Def(DataSearch(Memo, s1, s2, 0, 0), 0)/100.) + " руб.";
 
    s1 = "title":"", s2 = "","titles";  // тарифный план
    ValueListEditor->Strings->ValueFromIndex[3] = " " + DataSearch(Memo, s1, s2, 0, 0);
 
 
    s1 = "userLName":"", s2 = "","dateBirth";
    temp = " " + DataSearch(Memo, s1, s2, 0, 0);  // фамилия
    s1 = "userFName":"", s2 = "","userMName";
    temp += " " + DataSearch(Memo, s1, s2, 0, 0);  // имя
    s1 = "userMName":"", s2 = "","userLName";
    temp += " " + DataSearch(Memo, s1, s2, 0, 0);  // отчество
    ValueListEditor->Strings->ValueFromIndex[1] = temp;  // ФИО
 
 
    s1 = "servicesFPL":[{"id":", s2 = ","number"";
    SL->Clear();
    SL->Add("serviceId=" + DataSearch(Memo, s1, s2, 0, 0));
 
//  генерация uuid, например (как вариант), 998A0BCC-EC31-4187-881E-1A1CAC90EB64
//  если лень, то можно просто написать
//  SL->Add("uuid=998A0BCC-EC31-4187-881E-1A1CAC90EB64");
//  а можно и не писать
    String symbols = "0123456789ABCDEF", uuid = "";
    const delimiters_count = 4, uuid_length = 36;
    char delimiter_char = '-';
    bool is_delimiter;
    int i, j, delimiter_pos[delimiters_count] = {9, 14, 19, 24}, symbols_length = symbols.Length();
    randomize();
    for (i = 1; i <= uuid_length; i++)
    {
      is_delimiter = 0;
      for (j = 0; j < delimiters_count; j++)
        if (i == delimiter_pos[j])
        {
          uuid += delimiter_char;
          is_delimiter = 1;
          break;
        }
      if (!is_delimiter)
        uuid += symbols[random(symbols_length)+1];
    }
    SL->Add("uuid=" + uuid);
 
    HTTP->Post("https://lk.rt.ru/serverLogic/internetGetCurrentTariff", SL, MS);
    MS->Position = 0;
    SL->LoadFromStream(MS);
    Memo->Text = UTF8ToString(SL->Text);
 
 
    s1 = "baseCost":", s2 = ","changeCost";  // стоимость услуги / тарифного плана
    temp = ValueListEditor->Strings->ValueFromIndex[3];
    temp += " - " + String(StrToInt64Def(DataSearch(Memo, s1, s2, 0, 0), 0)/100.) + " руб./месяц";
    ValueListEditor->Strings->ValueFromIndex[3] = temp;
 
 
    Caption = title + "   : : : : :   " + FloatToStr((GetTickCount()-start)/1000.) + " секунд";  // "\u231A" - часы
    }
 
    ValueListEditor->Row = 3;
    delete MS;
    delete SL;
    delete ssl;
    delete HTTP;
//  delete RegExpr;
  }
  catch (EIdException &E)
  {
//  ShowMessage("Ошибка:\n""+E.Message+""");
    MessageBox(Application->Handle, AnsiString("""+E.Message+""\n\nВозможно, отсутствует подключение\nк интернету или нет доступа к сайту.").c_str(), "Ошибка", MB_OK+MB_ICONWARNING);
  }
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
18.12.2015, 00:14  [ТС]
Неужели никто не пытался авторизоваться в контакте?
0
18.12.2015, 18:06

Не по теме:

Вконтакт - зло, я там "числюсь" лишь потому, что однажды нужно было посмотреть какое-то видео, а без регистрации сделать это не получалось.

0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
18.12.2015, 21:02  [ТС]
Полностью согласен, но надо иметь возможность програмно считать пару страниц, а тут такая проблема Может кто делал что-то подобное?
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,022
18.12.2015, 21:28
https://vk.com/dev/auth_mobile
https://vk.com/dev/api_requests
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
18.12.2015, 23:02  [ТС]
Должно быть именно Win32 (Win64) решение
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
21.12.2015, 09:54
Цитата Сообщение от nbelyh Посмотреть сообщение
Должно быть именно Win32 (Win64) решение
Вам уже дали ответ, осталось только реализовать через API, в чем сложности ?
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
26.12.2015, 15:07  [ТС]
Мне не нужно какое-либо приложение для контакта загружаемое на сервер или в телефон.
По сути это что-то просто авторизующее и дающее право прочитать заданную страницу.
Т.е. регистрация его где-либо во ВК...исключена.

Может делал кто-то для контакта подобную автоизацию? Есть примеры?
0
34 / 34 / 21
Регистрация: 22.09.2013
Сообщений: 401
26.12.2015, 20:16
Создал новый проект на Embarcadero RAD Studio XE5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
TStringList *SL= new TStringList;
 
IdHTTP1->CookieManager= IdCookieManager1;
 
IdHTTP1->AllowCookies= true;
 
String Url = "https://login.vk.com/?act=login";
       SL->Add("email="+Login->Text);
       SL->Add("pass="+Password->Text);
 
 
try
    {
      MemoPage->Text= IdHTTP1->Post(Url,SL);
    }
catch(EIdException &E)   // Ловим исключения Indy
    {
       ShowMessage("Ошибка:\n"+E.Message);
    };
 
delete SL;
}
//---------------------------------------------------------------------------
Код отлично сработал!
http://rghost.ru/7WyZM7QNK
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18
02.01.2016, 00:21  [ТС]
Мне там выдается огромный кусок текста, среди которого можно найти -
"Пожалуйста, проверьте правильность написания <b>логина</b> и <b>пароля</b>"

Логин и парль верны. авторизация не проходит.
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
09.07.2018, 20:01
Хочу поднять тему, господа, т.к. по последнему коду авторизация не проходит. В результате в Memo получаю страницу вконтакте без активации. Кто может подсказать куда копнуть и что исправить, дабы авторизация прошла?
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
14.07.2018, 19:55
Ну или подскажите другой рабочий способ авторизоваться вконтакте для работы с API.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2018, 19:55
Помогаю со студенческими работами здесь

Авторизация в ВК через idHTTP
Пытаюсь проверить авторизацию в вк. Но пишет ошибку http/1.1 302 found руугается на строку ...

Авторизация на сайте через IdHTTP
Здравствуйте! Не могу понять собственно в чём дело - не проходить авторизация. Прочитал много похожих тем на форуме и никак не найду...

Авторизация на сайте через IdHTTP
Помогите авторизоваться на сайте ea.com через IdHTTP там стоит SSL но я уже на учился с ним работать дело в том что я отправляю запрос...

Авторизация на сайте с использованием IdHTTP
Пытаюсь авторизоваться на почте: void __fastcall TForm1::Button1Click(TObject *Sender) { IdHTTP1-&gt;Request-&gt;Host=...

Авторизация вконтакте С++
Всем привет! Делаю программу на C++ для работы с сайтом вконтакте. Вообще на PHP это уже много раз делал, но сейчас нужен доступ для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru