使用HEAD请求检查网页状态的可靠性

Pau*_*aul 2 http web-crawler http-headers http-head

我一直在测试我编写的一个小应用程序,它基本上会执行http HEAD请求以检查页面是否存在,重定向等等.我注意到有些页面对HEAD的响应与GET请求不同.例如:

curl -I http://www.youtube.com/bbcpersian
Run Code Online (Sandbox Code Playgroud)

返回404.肯定会有.一些(相当重要的)网站甚至返回500个错误以响应HEAD - 我猜这不是故意的.

所以我的问题是:

  • 除了配置问题或想要阻止僵尸程序的网站管理员之外,某些网站(或网站内的网页)的行为是否有任何正当理由?
  • 如果我不能依赖HEAD请求,我只需要执行GET并在获得标题后中止请求.感觉有点"错误"......

虽然表现得像这样的页面数量很少,但每个误报最终都是人工调查的,这导致了大量的浪费.

Pau*_*aul 5

经过一段时间后,我可以回答自己的问题:

  • 许多网站"在野外"错误地响应HEAD请求.我有一些建议,一些网站管理员将他们的网站配置为响应除200到HEAD请求之外的任何内容,因为他们认为HEAD请求与坏机器人相关联.我无法验证推理,但我可以说大量网站(或网站上的网页 - 请参阅我在youtube上的原始点)对HEAD请求的响应不正确.
  • GET 检查页面确实存在(或不重定向等)的唯一可靠方法.