powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Connection Closed Gracefully на http.get(url_)
6 сообщений из 6, страница 1 из 1
Connection Closed Gracefully на http.get(url_)
    #39978302
ksfhsuej1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени ув. знатоки и иже с ними! Писал парсер с сайта объявлений cian.ru.
Сделал даже полный аналог фильтра для поиска с самого сайта (покупка\продажа\комнаты и тд).
Поначалу прекрасно парсил даже и в 10 и в 100 потоков. Прикрутил каждую страницу к одному thread.
Но счастье, как грится, было недолгим - "Connection Closed Gracefully".

Теперь эта, с позволения сказать, - ошибка вылетает сразу, не дает спарсить даже 1 страницу, т.е результат начисто по-нулям.
Парсил через TIdHTTP.GET(url)/ Пробовал менять и "user agent" в самом компоненте, включал и глоб.прокси через VPN в пр-ме Phsiphon, безрезультатно.
Понятно, что эта чисто внешняя "загрушка" со стороны самого сервера cian.ru..
Полный нуб в этом вопросе, подскажите пож. куда копать, уж очень долго писал етот парсер ))))

Процедура запуска для потока:

Код: pascal
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.
procedure MThread.Execute;
var http:TIdHTTP;
    ssl: TIdSSLIOHandlerSocketOpenSSL; s:string;
begin
  inherited;

  try
  http:= TIdHTTP.create(nil);
  ssl:=  TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
  with ssl do
  begin
     SSLOptions.Mode:= sslmUnassigned;
     SSLOptions.Method := sslvSSLv23;
  end;

  with http do
  begin
    //Response.KeepAlive:= true;
    Request.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.9) Gecko/20100101 Goanna/4.6 Firefox/68.9 PaleMoon/28.10.0';

    AllowCookies:=    true;
    HandleRedirects:= true;
    HTTPOptions:=    [hoForceEncodeParams];
    RedirectMaximum:= 100;
    ProxyParams.BasicAuthentication:= false;
    IOHandler:= ssl
  end;

  page:= http.get(url_); // тот самый, ранее сформированый в интерфейсе URL

  finally
    ssl. free;
    http.free;
  end;


  except
  // Здесь с некоторых пор имеем "Connection Closed Gracefully"
  on E: Exception do
       messagebox(0,pchar(E.ClassName+': '+E.Message),pchar(''),MB_ICONWARNING+MB_OK); 

  end;
end;
...
Рейтинг: 0 / 0
Connection Closed Gracefully на http.get(url_)
    #39978308
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А этот циан поддерживает keep-alive? Если да, то советую использовать этот режим, это сэкономит уйму времени на установку защищённого соединения. Но в этом случае нужно будет использовать один и тот же IdHttp повторно.
...
Рейтинг: 0 / 0
Connection Closed Gracefully на http.get(url_)
    #39978310
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ksfhsuej1,

Проверьте: с Вашего IP просто через браузер получается добраться до желаемого?
Если да, нужно смотреть на лог обмена (wireshark-ом, например)
Если нет - попробуйте без всякх прокси, просто с другого провайдера/от друга/сотовый модем.
...
Рейтинг: 0 / 0
Connection Closed Gracefully на http.get(url_)
    #39978473
ksfhsuej1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer,

Сорри, только добрался до компа. Подскажите как можно узнать поддерживает данный сайт этот режим keep-alive, либо нет. Так понял, что он выручит именно в ситуации когда тот самый "отбой" сервера явился причиной неавторизованного доступа и после превышения некого лимита запросов со стороны оного? У сайта конечно же есть фишка с регистрацией и лич. кабинет с мин.настройками. Но если правильно понял, для поддержки keep-alive нужно предварительно назначить поля "username" и "password" у idHTTP и как-раз указать те самые, что при регистрации на сайте? Просто гадаю, признаться честно.. Не работал плотно еще с этим компонентов. Приведите пож. пример как может выглядеть такой алгоритм инициализации, конечно если он несколько сложнее чем:

Код: pascal
1.
2.
3.
http.Request.UserName:= "login";
http.Request.Password:= "password";
page:= http.get(url_);
...
Рейтинг: 0 / 0
Connection Closed Gracefully на http.get(url_)
    #39978475
ksfhsuej1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x1ca4064,

Там стала появляться капча(ранее её не наблюдалось). После этого зарегался на сайте, капча изчезла, открывает хорошо любой скомбинированный url в любом браузере. Но в самой программе всё по-старому. Обидно, что первые 2 дня все работало стабильно. Да, пробовал и менять модем(подключал как-раз сотку к компу), беда та же. Попробую wireshark-ом, и пришлю логи
...
Рейтинг: 0 / 0
Connection Closed Gracefully на http.get(url_)
    #39978477
ksfhsuej1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ksfhsuej1,

Может предпочтительнее использовать пост-запрос с заранее сформированным файлом, типа:

Код: pascal
1.
page:= http.post(url_, "файл с параметрами");
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Connection Closed Gracefully на http.get(url_)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]