Обработать петляющий редирект

Поддержка
  • Столкнулся с задачей, а именно:
    Нужно заслать get запрос на сайт и узнать был ли редирект и количество.
    Не могу придумать как выйди из редиректа который может быть бесконечным? время выполнения запроса ставил 1 сек без толку. Как закостылить такую фичу? гуру хелпните плез.
    пример сайта http://www.winint.org/ - редиректы могут шпарить рандомно от нескольких до тысячи, в итоге поток может тупо висеть часами и не выйти из петли.

  • @кот http://redirectdetective.com/

    Если же нужно без сторонних сервисов то отключаеш проход по редиректу и смотриш в заголовках location дерективу. Если она = домену то следовательно ты в петле

  • @qwaros ахтунг, то что надо, и как я сам до этого недопетрил зачекать - location, благодарю тебя, уважаемый.

  • @кот
    Не обязательно чекать location. Достаточно чекать статус ответа. Если 301, 302 и т.д. - значит редирект.
    Возможно, правильнее проверять !200 =)

  • @xclsv said in Обработать петляющий редирект:

    301

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

  • @кот said in Обработать петляющий редирект:

    @xclsv said in Обработать петляющий редирект:

    301

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

    точно так же можно и подсчет перенаправлений сделать. Отключить автоматический переход по редиректу, брать директиву lacation из заголовков ответа, увеличивая счетчик переходить по url в директиве. На выходе получаешь счетчик перенаправлений и конечную точку, в серединке где то ставиш if условие для выявления цикличного редиректа.