请问谁有识别搜索引擎的Nodejs包

请问谁有识别搜索引擎的Nodejs包

请问谁有识别搜索引擎的包,不想自己写,不完整。

4 回复

标题:请问谁有识别搜索引擎的Node.js包?

内容:

在开发过程中,我们有时需要识别访问网站的是不是搜索引擎爬虫。幸运的是,Node.js 社区提供了许多现成的库来帮助我们完成这项任务。一个常用的库是 user-agent-parser,它可以解析用户代理字符串(User-Agent),从而帮助我们识别访问者是否为搜索引擎。

示例代码

首先,你需要安装 user-agent-parser 这个库。你可以使用 npm 来安装它:

npm install useragent

然后,你可以使用以下代码来检查访问者是否为搜索引擎:

const useragent = require('useragent');

function isSearchEngine(userAgentString) {
    const agent = useragent.parse(userAgentString);
    const botPatterns = [
        'Googlebot',       // Google
        'Bingbot',         // Bing
        'Slurp',           // Yahoo
        'DuckDuckBot',     // DuckDuckGo
        'Baiduspider',     // Baidu
        'YandexBot',       // Yandex
        'Sogou',           // Sogou
        'Exabot',          // Exalead
        'Facebot',         // Facebook
        'ia_archiver',     // Alexa
        'MJ12bot',         // Majestic
        'Ezooms',          // Ezooms
        'CCBot',           // CommonCrawl
        'AhrefsBot',       // Ahrefs
        'rogerbot',        // Moz
        'DotBot',          // Dot SEO
        'SemrushBot'       // Semrush
    ];

    return botPatterns.some(pattern => agent.family.includes(pattern));
}

// 使用示例
const userAgentString = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
console.log(isSearchEngine(userAgentString));  // 输出: true

const userAgentString2 = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36';
console.log(isSearchEngine(userAgentString2));  // 输出: false

解释

  • useragent: 这是一个流行的库,用于解析用户代理字符串。
  • isSearchEngine 函数: 接收一个用户代理字符串,并通过检查该字符串是否包含已知的搜索引擎标识符来判断访问者是否为搜索引擎。
  • botPatterns 数组: 包含了常见的搜索引擎的用户代理字符串标识符。
  • some 方法: 用于检查数组中的任意元素是否满足给定条件。在这个例子中,它检查用户代理字符串是否包含任何一个搜索引擎的标识符。

通过这种方式,我们可以轻松地识别访问者是否为搜索引擎,而无需自己编写复杂的逻辑。


@.@自己把自己挖的坑填一下。 ua-parser-js uas-parser

希望有用得着的。

和楼主同样想法,自己收集了个常见搜索引擎的ua正则表达式列表 https://github.com/andyhu/search-engine-bot-list 欢迎大家一起维护更新

针对“请问谁有识别搜索引擎的Nodejs包”这个问题,你可以使用express-useragentua-parser-js这样的库来解析用户代理字符串(User-Agent String),从而判断请求是否来自搜索引擎。搜索引擎通常会在用户代理字符串中包含特定的关键字,比如Googlebot、Bingbot等。

示例代码

首先,你需要安装express-useragent库:

npm install express-useragent

然后,在你的Node.js项目中引入并使用它:

const express = require('express');
const useragent = require('express-useragent');

const app = express();

app.use(useragent.express());

app.get('/', (req, res) => {
    const userAgentString = req.useragent.source;
    
    let isSearchEngine = false;

    // 检查User-Agent字符串中是否包含搜索引擎的关键字
    if (userAgentString.includes('Googlebot') || 
        userAgentString.includes('Bingbot') ||
        userAgentString.includes('Slurp')) {
        
        isSearchEngine = true;
    }

    res.send(`Is this request from a search engine? ${isSearchEngine ? 'Yes' : 'No'}`);
});

app.listen(3000, () => console.log('Server running on port 3000'));

这段代码会检查每个访问根路径/的请求,判断其User-Agent字符串是否包含常见的搜索引擎关键字。如果是,则返回"Yes"表示这是一个来自搜索引擎的请求;否则返回"No"。

解释

  1. 安装库:首先需要通过npm安装express-useragent库。
  2. 使用库:通过app.use(useragent.express())将中间件添加到Express应用中,这样可以在每个请求中访问到解析后的useragent对象。
  3. 检查搜索引擎:在路由处理函数中,我们检查req.useragent.source(即原始的User-Agent字符串)是否包含特定的搜索引擎关键字。如果包含,则说明这是一个来自搜索引擎的请求。

这种方法虽然简单,但在实际生产环境中可能需要更复杂的逻辑来准确地识别所有类型的搜索引擎爬虫。

回到顶部