如果网站提供了 RSS 或 Atom 提要,不时轮询它不是一个坏主意。实际上,像一个好网民一样进行民意调查(还记得那个概念吗?)需要注意细节。
首先,提要可能不会经常更改。根据它是谁以及您关注的内容,您可能会每天收到一次更新,或者如果它真的很特别,您可能会每天收到多次更新。每个人和其他一切都将比这更少。
鉴于实际情况,每 10 秒轮询一次是否有意义?应该不会吧?有人设置了类似的东西并让它运行了几个月,直到我终于注意到它并自己处理它。
关于 URL 的另一件事是它们中的一些表现良好并且保持不变,直到它们被故意更改。它们不会因为您请求副本而改变。一个好的提要当然是这样的。
鉴于此,您可以在获取提要副本时跟踪“Last-Modified”标题。然后,您可以在下次来查找更新时转身并在“If-Modified-Since”标题中使用相同的值。如果没有任何变化,Web 服务器会注意到它与已有的相同,它会向您发送一个 HTTP 304 代码,告诉您使用本地(缓存)副本。换句话说,您现在没有理由再下载大约 640 KB 的数据。
或者,许多 Web 服务器(包括我的)都支持这个叫做“ETag”的东西,它相当于一个你在请求中返回的 blob。如果它没有改变,你会得到一个漂亮的小 304。否则,你会得到与往常一样的内容。这实际上是执行上述“IMS”行为的另一种方式。
除此之外,行为良好的提要将具有与您在实际网站上获得的内容相同的内容。 HTML 可能会稍有不同,以解决愚蠢的提要阅读器中的许多故障,以拯救使用这些程序的人,但实际内容应该是相同的。鉴于此,有一个重要的事情要消除:没有理由请求提要中提到的每一个 $(*&^$*(&^@#* 帖子。
*呼气* …好吧,让我们继续。
如果您拉动提要,请不要拉动帖子。如果您拉帖子,请不要拉提要。如果您同时拉动两者,那么您就错过了聚合提要的全部意义!
还有一些用户代理谎报他们是谁或他们来自哪里,因为他们认为这会以某种方式让他们得到特殊待遇。我的意思是,它可能会……有一天……但不是他们想要的方式。它更像是“欢迎使用 IP 过滤器”,而不是“哦,在这里,绕过这个网站一开始就没有的付费墙”。
让我们在这里总结一些不良行为:
- 过于频繁地加载提要,例如每 10 秒一次,而它从未如此频繁地更新
不使用 If-Modified-Since (ETag),因此即使没有任何变化,也始终下载提要的完整副本
在提取提要副本后抓取单个帖子,即使它们具有相同的该死内容
在声称自己是“GoogleBot”的同时这样做……猜猜看,这实际上*引起了人们对*您的流程的关注。记住“66.249”并注意到绝对不是那样的东西很容易。此外,特别是反向到“googleusercontent.com”的任何主机都不是实际的爬虫。 (是的,Google netblock 是 /19,而不是 /16。如果您只是查看日志,这是一个合理的近似值。)
发送毫无意义的推荐人只是不礼貌的行为。
您是否相信大多数不良行为实际上会同时做出不止一种不良行为?例如,仅仅每 10 秒访问一次站点是不够的,但它也会对整个提要的副本进行评分。连续几周每 10 秒 640 KB,直到有人注意到并拔掉插头(或者我阻止它)。真的。这不是很好的利用资源!
真正令人惊奇的是,当被要求放慢速度并实际执行 If-Modified-Since 事情时,结果他们*无法*发送标头。是的!这就是当今提要阅读器技术的最先进技术:每次都下载完整的东西。
If-Modified-Since。它在RFC 1945中,也就是 HTTP/1.0 规范…从 *1996 年 5 月 *。已经25年多了,是时候开始使用这个东西了。