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

时间:2011-09-08 16:14:25

标签: http http-headers web-crawler http-head

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

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

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

所以我的问题是:

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

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

2 个答案:

答案 0 :(得分:5)

经过一段时间后,我可以回答更多问题:

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

答案 1 :(得分:0)

您尝试使用的URL: http://www.youtube.com/bbcpersian 不是正确的网址,因此它会显示404。

正确的URL是: https://www.youtube.com/user/BBCPersian,它得到200。