Надежность использования HEAD-запроса для проверки статуса веб-страницы - PullRequest
2 голосов
/ 08 сентября 2011

Я тестировал небольшое написанное мной приложение, которое в основном выполняет запрос HTTP HEAD, чтобы проверить, существует ли страница, перенаправляет ли я и т. Д. Я заметил, что некоторые страницы реагируют на HEAD иначе, чем запросы GET. Например:

curl -I http://www.youtube.com/bbcpersian

возвращает 404. Это определенно есть. Некоторые (довольно крупные) сайты даже возвращают 500 ошибок в ответ на HEAD - что, я полагаю, не является преднамеренным.

Итак, мои вопросы:

  • Есть ли какая-либо веская причина, по которой некоторые сайты (или страницы внутри сайтов) будут вести себя так же, кроме проблем конфигурации или веб-мастера, желающего заблокировать ботов?
  • Если я не могу полагаться на запрос HEAD, я просто остаюсь с выполнением GET и отменой запроса, когда у меня есть заголовки. Это немного "неправильно" ...

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

Ответы [ 2 ]

5 голосов
/ 03 ноября 2011

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

  • многие сайты «в дикой природе» некорректно отвечают на запросы HEAD. У меня были предположения, что некоторые веб-мастера настраивают свои сайты так, чтобы они отвечали на что угодно, кроме запросов 200 к HEAD, потому что считают, что запросы HEAD связаны с плохими ботами. Я не могу подтвердить обоснование, но могу сказать, что большое количество сайтов (или страниц на сайтах - см. Мою исходную точку на YouTube) неправильно отвечают на запрос HEAD.
  • GET - это единственный надежный способ проверить, что страница действительно существует (или не перенаправляет и т. Д.).
0 голосов
/ 31 мая 2019

URL-адрес, который вы пытаетесь: http://www.youtube.com/bbcpersian не является правильным URL-адресом, поэтому он дает 404.

Правильный URL-адрес: https://www.youtube.com/user/BBCPersian и он дает 200.

...