![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем здравия!
Пишу не большую программку для личного использования столкнул с первой проблемой на первом шаге, на шаге авторизации в вк. Все параметры всё правильно собирается и отправляется методом POST получаю код редиректа 302 В idhttp.Response.Location находится заветная ссылка по которой если перейти авторизуешься в вк, я пробовал получил ссылку в Memo она такого вида https://m.vk.com/login?role=fast&to=&s=1&__q_hash=(тут md5_hash судя по виду) вставлял этот линк в браузер и переходил на свою страницу авторизованным это меня удивило... Но когда я Код:
try
IdHTTP.HandleRedirects:= false;
IdHTTP.Post('https://login.vk.com/', post);
except
if (idHTTP.Response.ResponseText='HTTP/1.1 302 Found') then //Если сервер ответил нам редиректом то
sleep(1000);
url:= idhttp.Response.Location ; // Достаем адрес редиректа из заголовка ответа сервера
idhttp.HandleRedirects:= true; // Включаем авторедирект
if pos('Выход',idhttp.Get(url))>0 then // Если на странице есть слово Выход то авторизация удалась
memo1.Text:= 'OK';lmikle: пользуемся тегами Мне прога пишет Socket Error #0 Перепробовал массу способов не могу разобраться, остаётся только переходить на Synapse если не получится с Indy, только с Synapse вообще не работал. Версия Indy 10.5.5 искал свежее не нашёл... Библиотеки libeay32.dll и ssleay32 лежат рядом с прогой какая версия не помню, пробовал разные скачивать все выдавали ошибку точка входа не найдена что то такое, может быть в них проблема я хз, подскажите в чём может быть дело Последний раз редактировалось lmikle, 22.02.2017 в 20:31. |
|
#2
|
||||
|
||||
|
Вашей реализации не вижу, но насколько знаю, мало того что библиотеки рядом лежат. Я конечно не специалист в инди, но разок пришлось решать. Вот пример из рабочего проекта (правда тут отправка почты, но не суть - главное ssl).
Код:
...
id_SMTP := TIdSMTP.Create;
id_SMTP.Host := 'smtp.yandex.ru';
id_SMTP.Port := 25;
.....
id_SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
id_SSL.Destination := id_SMTP.Host + ':' + IntToStr(id_SMTP.Port);
id_SSL.Host := id_SMTP.Host;
id_SSL.Port := id_SMTP.Port;
id_SSL.DefaultPort := 0;
id_SSL.SSLOptions.Method := sslvSSLv23;
id_SSL.SSLOptions.Mode := sslmUnassigned;
id_SMTP.IOHandler := id_SSL;
id_SMTP.UseTLS := utUseExplicitTLS;
...
try
id_SMTP.Connect;
if id_SMTP.Connected then
id_SMTP.Send(id_MSG);
id_SMTP.Disconnect;
except
...
end;
...
id_SMTP.Free;
id_SSL.Free; |
|
#3
|
|||
|
|||
|
SSL работает нормально иначе я бы не смог спарсить страницу чтобы собрать нужны данные для отправки запроса и POST запрос на https отправляется правильно, но не получается сделать редирект по ссылке которая находится в idhttp.Response.Location, кстати ставил на форму tWebBrowser загружал в него ссылку из idhttp.Response.Location и мне показывалась страница моего авторизованного аккаунта, я думаю что ошибка именно в
url:= idhttp.Response.Location; idhttp.HandleRedirects:= true; idhttp.Get(url); |
|
#4
|
||||
|
||||
|
Тогда извиняюсь за неуместный ответ. К сожалению ничем теоретическим помочь не могу. С практической точки зрения - нужно либо смотреть Ваш исходник, либо сделать свои наброски, что уже лень.
|
|
#5
|
|||
|
|||
|
Проблема решилась путём обновления indy
|
|
#6
|
|||
|
|||
|
Ну, ты бы линк на найденную версию выложил бы что-ли...
И номер версии... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
ApxaHGe1 (24.02.2017)
| ||