真正有趣的部分是(1)尝试确保渲染是确定性的(,相同的页面在 Google 看来始终相同)(2)检测我们何时显著偏离浏览器的实际行为(因此我们不会为爬虫创建太多无意义的 URL 或太多虚假 URL)并重定向浏览器(看起来像 IE3)。
Firefox(以及后来的 Chrome),所以我们没有发现很多 白俄罗斯 号码数据 说“使用 IE 返回”或“请下载 Firefox”的页面。 我编辑了 SpiderMonkey 的字节码调度,以帮助检测模拟浏览器何时陷入混乱并可能产生无意义的内容。
我花了很多功夫才弄清楚 IE、FireFox 和 Chrome 中是如何触发不同的 JavaScript 事件的。事实证明,如果您点击刷新按钮,某些页面实际上会在新加载的页面和未加载的页面之间以不同的顺序触发事件。
(当我了解到按住 Shift 键并按下浏览器的重新加载按钮以便获取新页面时发生了这种情况。) 在某些时候,一些 SEO 认为 random() 总是返回 0.5。
我不确定是否有人发现 JavaScript 总是查看 2006 年夏天的日期,但我认为情况已经改变。我希望他们现在使用所有加载的 JavaScript 和页面文本的密钥加密哈希来设置随机种子和日期,因此它是确定性的但很难被破解。
(您可以错开一个月的日期,并将不同页面的日期移动到不同的时间,方法是将页面内容(一个月中的现代秒数)添加到当前时间,将该时间添加到一个月的范围,然后减去您之前添加的值。