🔄 Проблема с бесконечным циклом при GET-запросе

Moved Поддержка
  • Столкнулся с багом при работе с GET-запросами в стандартном HTTP-клиенте. Если отправить запрос на определённый URL, скрипт входит в бесконечный цикл, возвращая статус 308. Это наблюдается только на одной конкретной странице, тогда как остальные запросы работают нормально. Я второй раз встречаюсь с подобной проблемой, первый адрес уже не помню ибо думал в последующих версиях БАС это починят, но увы - нет :)

    Детали проблемы:

    • Проверено на последней версии 28.3.0 а так же 27.9.1.
    • Проблемный адрес: https://idnplay.com/contact (страница не существует).
    • Запросы на главный адрес https://idnplay.com работают корректно.
    • На странице https://idnplay.com/contact через браузер можно иногда увидеть Cloudflare, возможно, проблема связана с ним. Сам сайт компании существует и корректно функционирует (я к нему никакого отношения не имею😄)

    Логика поведения:

    1. Первые два запроса на https://idnplay.com/contact клиент отправляет с заголовками.
    2. Последующие запросы идут уже без заголовков, и они повторяются бесконечно, помогает только полная остановка скрипта или ручной стоп действия в режиме записи.
    3. С другими страница сайта (которые существуют) делая get запрос проблем нет. Проблема только с https://idnplay.com/contact или подобными страницами которых не существует.
    4. Если делать запросы на другие сайты страниц которых не существует или они с Cloudflare то подобных проблем нет (был давно один сайт, но я не помню его адрес).

    Примеры логов:

    Лог 1
    Лог 2
    Лог 3

    • Данный баг я встретил случайно, заметив что скрипт вроде-бы перебрав весь список URL никак не останавливается.
    • Методом проб расставлял логи для отладки и наткнулся на то что скрипт доходит до действия и буд-то застывает в одном месте, хотя зависаний скрипта не происходит, оказалось он зацикливается на одном действии.
    • По итогу я устанавливал разные таймауты, включая 0 секунд – не помогает, скрипт продолжает цикл и решить проблему я так и не смог.
    • Подобного на форуме я не смог найти..

    Сталкивался ли кто-то с подобным багом? Можно ли как-то контролировать этот бесконечный цикл или обойти проблему? Возможно, это глобальная проблема клиента, которую нужно фиксить в будущем?

    Буду рад любой помощи или совету. Заранее спасибо! 🙏

    UPD!

    Обновляю пост ибо забыл приложить проект для примера. Пока создавал его то нашел некоторые нюансы:

    • Если запрос делать без прокси - все работает супер и без закливания, выдает код 403 как и положено ибо там Cloudflare.
    • Потом добавил цикл как и в моем исходном коде - все так же работает нормально. Но стоило мне добавить прокси как все начало входить в цикл. Прокси рабочий, я в проекте использовал Казахстан, потом поменял на Украину - так же история. Решил найти другие прокси бесплатные, взял Россию и о чудо - все работает без зацикливания.
    • Пошел дальше, нашел прокси Индии и вот тебе на, та же история. В проекте как раз добавлен этот прокси. Проект создан на версии 27.9.1 и потом обновил действия и протестировал на 28.3.0 история идентична.
    • Закономерность непонятна, то-ли это зависит от скорости прокси, толи от страны..

    Вот проект ➡️ test.xml

  • ModeratorM Moderator moved this topic from Support on
  • Во-первых, сайт в России не работает.
    Во-вторых, адрес пишите существующий: https://www.idnplay.com/

  • @gurkin4 Прочитайте пожалуйста внимательнее, я описал какая страница работает, а какая нет. Так же обновил пост и прикрепил тестовый проект

  • @Eoogeen
    f48c242e-ff1c-40ba-9cf2-6840adc8ea7f-image.png

    228407d8-4471-436c-aec8-0aeef16b9eb3-image.png

    Вот так сложно проверить?

  • @gurkin4 Надпись в браузере о том что "сайт выполнил переадресацию слишком много раз" я не замечал, точнее не вчитывался в текст что мне писало) но суть проблемы не в тексте и не в браузере, а в том что бас в HTTP-клиенте не во всех случаях корректно обрабатывает этот косяк сайта и тупо циклиться и его никак не оставновить.. Я прикрепил проект, посмотрите его.

  • @Eoogeen по адресу https://idnplay.com/contact нет никаких переадресаций. Работает лишь https://www.idnplay.com/contact
    Ну что сложного в своём скрипте подставить www? И, желательно, ко всем ссылкам данного сайта.

  • @gurkin4 мда уж, к такому меня жизнь не готовила что проблема только в www но ведь все же, проблема остается в клиенте которые это не может обработать, и кто-то может встретиться с тем же что и я, ибо мне это дело сутки мозг выносит и не мог понять что не так, думаю надо чинить в будущем. А Вас благодарю за такое открытие :D

  • @Eoogeen Это не открытие, это логика.
    Если хотите, напишите об ошибке админу того сайта. 🙂
    Кстати, подобных сайтов полно, некоторые даже не могут перенаправить с http:// на https:// и обратно.

  • @Eoogeen said in 🔄 Проблема с бесконечным циклом при GET-запросе:

    Столкнулся с багом при работе с GET-запросами в стандартном HTTP-клиенте. Если отправить запрос на определённый URL, скрипт входит в бесконечный цикл, возвращая статус 308. Это наблюдается только на одной конкретной странице, тогда как остальные запросы работают нормально. Я второй раз встречаюсь с подобной проблемой, первый адрес уже не помню ибо думал в последующих версиях БАС это починят, но увы - нет :)

    А в чём собственно баг то? В действии вы включили опцию "Следовать переадресациям", действие выполняет запрос, получает в ответ статус 308 это означает, что страница перенесена на другой url, который находится в заголовке "Location", действие совершает повторный запрос на новый url, а там снова статус 308 и снова перенаправление.

    Баг тут на стороне сайта

  • @Fox Проблема в том что это бесконечный цикл и никак его не остановить без остановки скрипта, или в режиме записи - действия. Или вы знаете способ как можно?

    Без включения переадресации не все сайты полноценно могут загружаться. Как говорил ниже пользователь gurkin4 то некоторые не могут перенаправить с http на https и т.д. И поэтому мне было проще вначале сайта не писать протокол чтоб оно само редиректило куда надо ибо у меня много различных сайтов, на каждый надо зайти и у каждого свои приколы.

    А в данном случае проблема решается подставкой www вначале домена и по итогу если не писать http -s то всё-равно нужен редирект.

    Ну и баг все же остается тем что это бесконечно, и если человек незнающий наткнется, то не поймет что происходит и будет как и голову ломать чтоб починить починить :)

  • @gurkin4 я вас понял, большое спасибо еще раз :)
    мне просто было проще писать домены без всяких протоколов вначале чтоб оно само перенаправляло куда надо, но теперь буду знать если что-то не работает) Владельцу писать не буду, главное чтоб мне понятна проблема)

  • @Eoogeen said in 🔄 Проблема с бесконечным циклом при GET-запросе:

    @Fox Проблема в том что это бесконечный цикл и никак его не остановить без остановки скрипта, или в режиме записи - действия. Или вы знаете способ как можно?

    Без включения переадресации не все сайты полноценно могут загружаться. Как говорил ниже пользователь gurkin4 то некоторые не могут перенаправить с http на https и т.д. И поэтому мне было проще вначале сайта не писать протокол чтоб оно само редиректило куда надо ибо у меня много различных сайтов, на каждый надо зайти и у каждого свои приколы.

    А в данном случае проблема решается подставкой www вначале домена и по итогу если не писать http -s то всё-равно нужен редирект.

    Ну и баг все же остается тем что это бесконечно, и если человек незнающий наткнется, то не поймет что происходит и будет как и голову ломать чтоб починить починить :)

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

  • @Fox ну а как это сделать? как ограничить? куда копать?

  • @Eoogeen said in 🔄 Проблема с бесконечным циклом при GET-запросе:

    @Fox ну а как это сделать? как ограничить? куда копать?

    Зачем копать? Простой цикл с получением нового url и счётчика количества итераций

    f31cb432-cd53-4623-84af-e67c184024ec-изображение.png

    Пример скрипта: 3151.xml

  • @Fox угу, ну тоже норм вариант. спасибо большое за помощь 👍

  • @Fox Как всегда на высоте, ты реал Шарый добрый Молодец :)))
    Тебе реал Орден надо выдать Золотой, за заслуги твои перед Обществом БАС и самим БАС :)