JSPM

  • Created
  • Published
  • Downloads 2606369
  • Score
    100M100P100Q194789F
  • License MIT

detects bots/crawlers/spiders via the user agent.

Package Exports

  • isbot

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (isbot) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

isbot

Detect bots/crawlers/spiders via the user agent.

Tests Status

install

$ npm i isbot

Usage

Simple detection

isBot(req.headers['user-agent'])

isBot('Googlebot/2.1 (+http://www.google.com/bot.html)') // true

isBot('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36') // false

Extending more user agents

Add rules to user agent match RegExp

isBot('Mozilla/5.0') // false

var myList = [
    'istat',
    'newspaper',
    'httpclient',
    '^mozilla/\\d\\.\\d$',
];

isBot.extend(myList);

isBot('Mozilla/5.0') // true

Excluding known crawlers

Remove rules to user agent match RegExp (see existing rules in list.json file)

isBot('Ceramic Tile Installation Guide') // true

var myList = [
    'Ceramic Tile Installation Guide',
    'NORAD National Defence Network'
];

isBot.exclude(myList);

isBot('Ceramic Tile Installation Guide') // false

extend and exclude use case

Use lookbehind assertion, introduced in V8 version 4.9 to exclude "Cubot" from "bot" rule

isBot.exclude(['bot']);
isBot.extend(['(?<! cu)bot']); // Recognise cubot browser as legit browser

isBot('Mozilla/5.0 (Linux; Android 8.0.0; CUBOT_P20) ...') // false
isBot('Googlebot/2.1 (+http://www.google.com/bot.html)') // true

Verbose result

Return the respective match for bot user agent rule

isBot.find('Googlebot/2.1 (+http://www.google.com/bot.html)') // 'bot'