-1

我已经组装了一个相当简单的爬行引擎,它工作得很好,并且在很大程度上避免了陷入循环陷阱。(即,页面 A 链接到页面 B,页面 B 链接到页面 A)。

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

这导致页面对于爬虫来说总是看起来像新页面,并且爬虫在两个页面之间移动时卡住了。

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

4

1 回答 1

0

也许它们只是会话 ID,而不是“缓存破坏者”——cookie 会有所帮助

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

确实,某些 URL(尤其是广告图像)旨在“破坏缓存”。但是,我们没有找到它们的循环引用。

许多 URL 会在 URL 中添加一个看起来随机的字符串,以识别访问者。没有打算破坏缓存——这只是他们为每个访问者获取唯一“会话标识符”的方法的副作用。

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

底线:

  • 通过启用 cookie,我们可以让大多数动态网站保持快乐,并避免 URL 中出现随机字符串(会话标识符)。
  • 广告商确实使用缓存破坏器——但大多没有循环引用。

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

于 2009-05-12T14:39:45.363 回答