Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npm 如何使用Express检测用于SEO的网络爬虫?_Npm_Web Crawler_User Agent - Fatal编程技术网

Npm 如何使用Express检测用于SEO的网络爬虫?

Npm 如何使用Express检测用于SEO的网络爬虫?,npm,web-crawler,user-agent,Npm,Web Crawler,User Agent,我一直在搜索npm包,但它们似乎都没有维护,并且依赖于过时的用户代理数据库。是否有一个可靠和最新的软件包可以帮助我检测爬虫?(大部分来自谷歌,Facebook,…搜索引擎优化)或者如果没有软件包,我可以自己写吗?(可能基于最新的用户代理数据库) 更清楚地说,我正在尝试创建一个同构/通用React网站,我希望它能被搜索引擎索引,其标题/元数据可以通过Facebook获取,但我不想在所有正常请求上预呈现,这样服务器就不会过载,因此,我考虑的解决方案是只对爬虫程序的请求进行预渲染,我没有任何要添加的内

我一直在搜索npm包,但它们似乎都没有维护,并且依赖于过时的用户代理数据库。是否有一个可靠和最新的软件包可以帮助我检测爬虫?(大部分来自谷歌,Facebook,…搜索引擎优化)或者如果没有软件包,我可以自己写吗?(可能基于最新的用户代理数据库)


更清楚地说,我正在尝试创建一个同构/通用React网站,我希望它能被搜索引擎索引,其标题/元数据可以通过Facebook获取,但我不想在所有正常请求上预呈现,这样服务器就不会过载,因此,我考虑的解决方案是只对爬虫程序的请求进行预渲染,我没有任何要添加的内容来搜索npm包。但我建议您使用最新的用户代理数据库来构建自己的包


目前,它拥有截至2014年11月的数据,据我所知,它拥有540多万个代理,也是最大的用户代理搜索引擎。

我找到的最佳解决方案是库,它允许您执行以下操作:

var useragent=require('useragent');
//对于实际请求使用:useragent.parse(req.headers['user-agent']);
var-agent=useragent.parse('Googlebot-News');
//会记录为真吗
console.log(agent.device.toJSON().family=='Spider')

它速度很快,并且很好地保持了最新状态。似乎是最好的办法。在浏览器中运行上述脚本:

它似乎是所有用户代理的数据库,不是吗?所以使用它,我如何判断一个用户代理字符串是否来自爬虫?哦,我明白了,有一个“类”列,用于分类它是浏览器还是机器人。但我必须比较整个字符串的相等性吗?顺便说一句,他们似乎没有API,所以我如何才能获得机器人程序的用户代理列表?没有API,但您可以通过右侧的图标将结果作为CSV加载。你也可以使用通配符搜索和“高级设置”来过滤一般的机器人或移动设备等。例如:我知道我们可以下载带有“保存”图标的csv,但它只在我搜索某些特定单词时出现。我曾想过合并元音查询的结果,但它也将结果限制为1000个,而不分页,因此搜索“u”不会给出所有结果