我有一个单页面应用程序,我使用无头浏览器向网页抓取工具提供页面,为页面提供一个与实际用户非常接近的版本。
目前,我将抓取用户代理列入白名单:google,facebook,bing,yahoo和linkedin。
我现在正在寻求将其扩展为针对每个用户代理的更强大的,而不仅仅是这些。这样做的原因是,如果我不接受特定的抓取工具,他们将看到的只是胡子HTML模板。这对我没有好处。
使用巨大的用户代理正则表达式是最好的方法吗?这是每次请求都要做的事情,所以我需要一些快速的东西......
答案 0 :(得分:0)
以下是用户代理列表:http://www.user-agents.org/(在此处找到:https://webmasters.stackexchange.com/questions/3264/where-can-i-find-a-list-of-search-engine-crawler-user-agents-and-their-domain-na)
如果太多,你可以实现Bloom filter(一种内存效率高的解决方案来执行'if exist'测试)。
关于白名单和良好做法,您可能也会对此感兴趣:https://meta.stackexchange.com/questions/37231/why-does-the-stack-overflow-sitemap-xml-use-a-user-agent-whitelist-instead-of-a