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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2016, 08:09   #1
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
Печаль [Indy idHTTP] https авторизация POST запросом

Здравствуйте.

- Indy версии 10.6.2.0
- Delphi 2010
- авторизуемся на сайте объявлений m.a**to.ru
- на форме idHTTP, IdSSLIOHandlerSocketOpenSSL, IdCookieManager

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 log: TStringList;
 timeout: Integer;
begin
 try
  timeout := 50000;
  
  IdHTTP1.ReadTimeout  := timeout;
  IdHTTP1.ConnectTimeout := timeout;
  IdSSLIOHandlerSocketOpenSSL1.ReadTimeout := timeout;
  IdSSLIOHandlerSocketOpenSSL1.ConnectTimeout := timeout;
  
  log := TStringList.Create;
  log.Add('login='+edit1.text);
  log.Add('password='+edit2.text);
  log.Add('next=/profile');
  log.Add('from=');

  idHTTP1.Post('https://m.a**to.ru/profile/login',log);

 Except
  on E : Exception do
   begin
    memo1.Lines.add(E.ClassName+' ошибка с сообщением : '+E.Message);
    log.Free;
    IdHTTP1.Free;
   end;
 end;

end;

Включаем сниффер HTTP Analyzer V7 и смотрим, что передает браузер и что передает программа.
инди.jpg

получается программа авторизуется успешно на сайте, НО затем срабатывает при редиректе на страницу профиля не GET запрос как в браузере, а снова POST, в итоге получаю 404



дорогие коллеги по цеху и сочувствующие помогите разобраться с данной проблемой.

Последний раз редактировалось Adamrus; 29.02.2016 в 08:42.
Adamrus вне форума Ответить с цитированием
Старый 29.02.2016, 16:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я вообще не в теме. но, думаю, что с avito всё будет очень и очень не просто!
Они 100% всеми силами борются с внешними клиентами - пользователь должен заходить через браузер и точка. Программно подключаться нельзя.
Разумеется, можно ковырять протокол и заставлять программу прикидываться браузером, но можно навешать кучу защит, начиная от использования сессий и заканчивая пользовательским JS скриптом, который посылает/принимает нужные данные.

Не пытайтесь решить общую задачу (авторизуемся на сайте объявлений m.a**to.ru)
ищите информацию по авторизации конкретно на авито.ру

p.s. сорри за оффтоп. Вряд ли это всё Вам поможет.
Но я не мог пройти молча мимо..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.02.2016, 17:31   #3
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я вообще не в теме. но, думаю, что с avito всё будет очень и очень не просто!
Они 100% всеми силами борются с внешними клиентами - пользователь должен заходить через браузер и точка. Программно подключаться нельзя.
Разумеется, можно ковырять протокол и заставлять программу прикидываться браузером, но можно навешать кучу защит, начиная от использования сессий и заканчивая пользовательским JS скриптом, который посылает/принимает нужные данные.

Не пытайтесь решить общую задачу (авторизуемся на сайте объявлений m.a**to.ru)
ищите информацию по авторизации конкретно на авито.ру

p.s. сорри за оффтоп. Вряд ли это всё Вам поможет.
Но я не мог пройти молча мимо..

нормуль, спасибо, что тему подняли ))))

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


просто в сети есть прога, называется, авитобот, они как то логинятся )))
Adamrus вне форума Ответить с цитированием
Старый 10.03.2016, 13:13   #4
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Цитата:
Сообщение от Adamrus Посмотреть сообщение
нормуль, спасибо, что тему подняли ))))

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


просто в сети есть прога, называется, авитобот, они как то логинятся )))
Не знаю актуально еще или нет. Судя по твоему коду имитации запроса как в браузере у тебя нет.

если после POST идет редирект на GET то надо использовать


Код:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
begin
VMethod:='GET'
end;
Если помог: Нажми Весы и оставь отзыв!!!
Smagulov85 вне форума Ответить с цитированием
Старый 10.03.2016, 13:53   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
вижу что данные моя программа по сути полностью имитирует как у браузера....
Что она имитирует если даже User-Agent и Referer не стоит?

+там наверняка выполняется какой-нибудь запрос (или генерируется часть данных) с помощью JS.

И еще там форма не обычная application/x-www-form-urlencoded, а multipart/form-data.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.03.2016 в 14:00.
Alex11223 вне форума Ответить с цитированием
Старый 10.03.2016, 15:25   #6
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что она имитирует если даже User-Agent и Referer не стоит?

+там наверняка выполняется какой-нибудь запрос (или генерируется часть данных) с помощью JS.

И еще там форма не обычная application/x-www-form-urlencoded, а multipart/form-data.

User-Agent прописан в св-х idHTTP
referer https: // m. avito. ru/ profile/login?from=


multipart/form-data исправил



теперь так
Изображения
Тип файла: jpg Безымянный.jpg (4.6 Кб, 133 просмотров)

Последний раз редактировалось Adamrus; 10.03.2016 в 15:36.
Adamrus вне форума Ответить с цитированием
Старый 23.10.2016, 20:46   #7
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

Цитата:
Сообщение от Adamrus Посмотреть сообщение
User-Agent прописан в св-х idHTTP
referer https: // m. avito. ru/ profile/login?from=


multipart/form-data исправил



теперь так
Не решили?

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.IdCookieManager1.CookieCollection.Clear;
form1.idHTTP1.AllowCookies:=true;
form1.idHTTP1.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:49.0) Gecko/20100101 Firefox/49.0';
form1.idHTTP1.Request.AcceptLanguage:='Accept-Language=ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
form1.IdHTTP1.Request.Referer :='https://m.avito.ru/profile';
enter:=Tstringlist.create;
enter.Add('login=xxx);
enter.Add('password=xxx');
enter.Add('next=/profile');
enter.Add('from=');
form1.Memo1.Text:=form1.idHTTP1.post('https://m.avito.ru/profile/login',enter);
//enter.free;
end;

Последний раз редактировалось Айдар; 23.10.2016 в 20:50.
Айдар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
INDY https IDHTTP авторизация win 7 win 8 Yuran Работа с сетью в Delphi 10 14.04.2015 15:55
Synapse Авторизация POST-запросом на получается Yuran Работа с сетью в Delphi 3 05.04.2015 23:17
Авторизация на Delphi7+Indy+HTTPS AndreiST Работа с сетью в Delphi 8 30.01.2013 10:46
Авторизация на UCOZ с idHTTP.Post Stalkker247 Работа с сетью в Delphi 15 14.03.2012 13:34
Авторизация через idHTTP (indy) на WordPress MyIE Работа с сетью в Delphi 5 02.05.2010 14:22