在抓取页面时检测CacheBuster查询字符串

时间:2009-03-18 03:18:56

标签: web-crawler

我已经整理了一个非常简单的爬行引擎,它可以很好地工作,并且大多数情况下避免卡在循环循环陷阱中。 (即,页面A链接到页面B和页面B链接到页面A)。

它在这个循环中遇到的唯一一次是当两个页面都使用cachebuster查询字符串相互链接时,基本上每个刷新的每个链接上都有一个唯一的查询字符串。

这会导致页面总是看起来像爬网程序的新页面,并且爬虫在两个页面之间移动。

除了在两个页面之间的N次反弹之后突然爆发,唯一的区别是查询字符串(我认为这不是一个非常好的方法),是否还有其他方法来检测和突破这些陷阱...?

1 个答案:

答案 0 :(得分:0)

也许他们只是会话ID,而不是“缓存破坏者”--- Cookie会有所帮助

几年前,我不得不处理类似的问题,我们找到了一个简单的解决方案:在您的网络客户端中启用Cookie。以下是为什么这有助于我们的解释:

确实,某些网址(特别是广告图片)旨在“破坏缓存”。但是,我们没有找到它们的循环引用。

许多网址会向网址添加随机字符串,以便识别访问者。没有打算破解缓存 - 这只是他们的方法的一个副作用,为每个访问者获得一个唯一的“会话标识符”。

当然,用cookie识别访客要好得多。事实上,大多数使用会话标识符的动态网站都会首先尝试使用Cookie。只有当他们发现Web客户端不支持它们时,网站才会回退到将URL添加到URL。

底线:

  • 通过启用Cookie,我们可以让大多数动态网站满意,并避免在网址中使用随机字符串(会话标识符)。
  • 广告商执行使用缓存破坏者---但大部分都没有循环引用。

对我们来说,这解决了这个问题。