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

Web crawler 在抓取页面时检测CacheBuster查询字符串,web-crawler,Web Crawler,我已经组装了一个相当简单的爬行引擎,它工作得非常好,并且在很大程度上避免了陷入循环陷阱。(即,A页链接到B页,B页链接到A页) 它唯一陷入这个循环的时候是当两个页面都使用cachebuster查询字符串彼此链接时,基本上每次刷新的每个链接上都是唯一的查询字符串 这会导致页面在爬虫程序中看起来总是像新页面,并且爬虫程序会在两个页面之间移动时卡住 除了在两个页面之间跳转N次后突然跳出,唯一的区别是查询字符串(我认为这不是一个很好的方法),还有没有其他方法可以检测并跳出这些陷阱…?也许它们只是会话ID

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

它唯一陷入这个循环的时候是当两个页面都使用cachebuster查询字符串彼此链接时,基本上每次刷新的每个链接上都是唯一的查询字符串

这会导致页面在爬虫程序中看起来总是像新页面,并且爬虫程序会在两个页面之间移动时卡住


除了在两个页面之间跳转N次后突然跳出,唯一的区别是查询字符串(我认为这不是一个很好的方法),还有没有其他方法可以检测并跳出这些陷阱…?

也许它们只是会话ID,而不是“缓存破坏程序”--cookies会有所帮助

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

诚然,一些URL(特别是广告图片)旨在“破坏缓存”。但是,我们没有找到与它们相关的循环引用

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

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

底线:

  • 通过启用cookie,我们可以让大多数动态站点保持愉快,并避免URL中出现随机字符串(会话标识符)
  • 广告商确实使用缓存拦截器,但大多没有循环引用
对我们来说,这解决了问题