Skip to content

Latest commit

Β 

History

History
470 lines (272 loc) Β· 16.1 KB

CHANGELOG.md

File metadata and controls

470 lines (272 loc) Β· 16.1 KB

Changelog

  • [FIX] Browser files (jsdeliver): UMD is global and ESM is named
  • Add substring "watch" to pattern
  • Recognise search providers inapp browsers
  • Ignore Crosswalk project: An old project that is no longer maintained and has insignificant usage
  • PDRL Analyzer
  • Recognise browsers: Ecosia ios in-app browser, Phantom in-app browser
  • Add bots: Cypress, Detectify, InternetMeasurement, BuiltWith
  • Recognise browser: Zip Recruiter job search app, Ecosia android in-app browser
  • Reduce pattern size by introducing the substring ".com" and improve generic pattern
  • Build now compatibile with older Javascript version: es2016
  • Remove named export "pattern" from the interface, instead use "getPattern" method
  • Add a couple of bot patterns
  • Add a naive fallback pattern for engines that do not support lookbehind in regular expressions
  • Add isbotNaive function to identify bots using a naive approach (simpler and faster)
  • Accept undefined in place of user agent string to allow headers property to be used "as is" (request.headers["user-agent"])
  • Accept null in place of user agent string to allow header value to be used "as is" (request.headers.get("user-agent"))
  • Recognise browsers with GMS Core (Google's Play Services) as natural non-bot browsers
  • A slightly neater typescript decleration file
  • Adjust "bot" pattern to recognise bot as a standalone word or word suffix (excluding "Cubot")
  • Recognise "rest-client" as a bot
  • Add createIsbotFromList: Create a custom isbot function from a list of string representation patterns
  • Recognise browsers with HMS Core (Huawei Mobile Services) as natural non-bot browsers
  • Pattern optimisation (performance improvement)

Breaking changes

This change is meant to reduce the size of the package and improve performance by building the regular expression in build time instead of runtime.

  • Change interface

    • Remove default import. Use named import instead: import { isbot } from "isbot";
    • Drop isbot attached functions from the interface. isbot.<SOMETHING> is no longer supported
  • Drop support for EOL node versions

New features

import { <SOMETHING> }  from "isbot";
import Type Description
pattern {RegExp} The regular expression used to identify bots
list {string[]} List of all individual pattern parts
isbotMatch {(userAgent: string): string | null} The substring matched by the regular expression
isbotMatches {(userAgent: string): string[]} All substrings matched by the regular expression
isbotPattern {(userAgent: string): string | null} The regular expression used to identify bot substring in the user agent
isbotPatterns {(userAgent: string): string[]} All regular expressions used to identify bot substrings in the user agent
createIsbot {(pattern: RegExp): (userAgent: string): boolean} Create a custom isbot function
  • Add "isbot.isbot" property and "isbot" named export to allow easier migration to version 4
  • Replace "ghost" with "inspect" to avoid false positives
  • Expose iife and support JSDeliver CDN
  • mem: Make a group non capturing
  • Adjust the "client" substring pattern
  • Adjust GOGGalaxy pattern
  • Update built files
  • Add PhantomJS substring
  • Add CryptoAPI to known bots list
  • Add Pageburst
  • Add CryptoAPI to known bots list
  • Improvement: List reduced by >50 patterns for a better one-word pattern
  • Adjust single word pattern: Add brackets
  • Recognise Uptime-Kuma/1.18.0
  • Reintroduce Yandex Search app exclusion
  • Edit list and exception patterns (more bots, simpler pattern)
  • Expose a copy of the regular expression pattern via isbot.pattern getter
  • Add strings starting with the word "nginx"
  • Fix for "Google Pixel" combination
  • Add strings starting with "custom"
  • Build supports more interpolation (transform class etc.)
  • Add SERP (Search Engine Results Pages) Reputation Management tools
  • Specify browser and node entries for require and import (resolves issue with jest 28)
  • Replace single space pattern with literal white space, which is more efficient
  • Add a more generic identifier to simplified user agent names
  • Add Zoom Webhook
  • Add nodejs native agent (undici)
  • Add random long string
  • Add CF-UC web crawler
  • Add TagInspector
  • Add Request-Pomise
  • Add Postman
  • Add generic term: "proxy"
  • Optimise "email" rule
  • Add Rexx
  • Add recognised bots user agent patterns
  • Add "matches" and "clear" to interface
  • Recognise axios/ user agent as bot
  • Add generic patterns (name/version) reduces pattern list size by >20%
  • Internal formatting
  • Remove const keyword from build (Fix)
  • Fix in type definition
  • Add "spawn" interface
  • Add some RSS readers detection
  • Refine amiga user agent detection
  • One mode duckduckgo pattern
  • Add bitdiscovery, Invision bot, ddg_android (duckduckgo), Braze, gobuster

New features

  • Typescript definition (isbot) supports any. Where a non-string argument is cast to a string before execution

New features

  • Native support for ESM and CommonJS
  • Start maintaining a security policy

List updates

  • Remove WAPCHOI from bot list
  • Recognise Google/google user agent for Android webview
  • Add a few known crawlers
  • Open source projects with indication to github.com
  • Address webview "Channel/googleplay", "GoogleApp/"
  • Add 4 more bot patterns
  • Stop treating Splash browser as bot
  • Add Prometheus new user agent (prometheus)
  • Add RestSharp .NET HTTP client
  • Add M2E Pro Cron Service
  • Add Deluge
  • Deprecate asafaweb.com (EOL)
  • Recognise Mozilla MozacFetch as natural non bot browser
  • Add generic term: "manager"
  • Reduce pattern complexity
  • Add Anonymous and bit.ly
  • Fix: It's not needed to download fixtures at postinstall
  • Add Neustar WPM
  • Internal change accommodates TypeScript compiler
  • Add pagespeed (Serf)
  • Add SmallProxy
  • Add CaptiveNetworkSupport
  • Recognise a bunch of more bots
  • Optimise some of the list so we still have the same length
  • Add Gozilla
  • Add PerimeterX Integration Services
  • Add Kubernetes probe bot (ping and health-check) @simonecorsi
  • Add 5538 known crawler user agent strings from myip.ms
  • Reduce complexity by 79 by introducing "https?:" pattern
  • Add Shared Web Credentials tool
  • Add Java runtime request
  • Add 2GDPR
  • Add GetRight
  • Add Pompos
  • Add SignalR client
  • Add FirePHP
  • Reduce complexity for UAs containing "amiga" (by 3)
  • Reduce complexity for UAs containing "download" (by 2)
  • Reduce pattern complexity by 14
  • Respond to crawler user agents added to user-agents.net/bots
  • ApplicationHealthService: Ping Service
  • Hexometer
  • Respond to crawler user agents added to user-agents.net/bots
  • Add an "ignoreList" to exclude user agents from user-agents.net

Add bots

  • Respond to crawler user agents added to user-agents.net/bots

Optimise pattern list

Combine all google products: Google browsers' user agent do not contain the word "Google".

Add bots

  • M4A1-WAPCHOI/2.0 (Java; U; MIDP-2.0; vi; NokiaC5-00.2) WAPCHOI/1.0.0 UCPro/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0 3gpp-gba
  • Mozilla/5.0 (compatible; Domains Project/1.0.3; +https://github.com/tb0hdan/domains)

Overall reduces list by 25 rules (from 345 rules to 320)

Crawlers list update

Add patterns for:

  • Google WebLight Proxy
  • HighWinds Content Delivery System
  • Hydra by addthis
  • RebelMouse
  • Scanners: Jorgee Vulnerability, ClamAV Website, Burp Collaborator
  • Monitoring services: Xymon, AlertSite, Hobbit, updown.io, Monit, Dotcom

Testing

Add some legit browser user-agent strings Fix periodic tests environment Add a tester page to check user agents easily

The API and code has not changed

Breaking changes

  • Remove testing on node 6 and 8
  • Some crawlers list updates can potentially change identification

Non breaking changes

  • Improve efficiency of rule by optimising some parts and removing others

Testing

  • Automatically download crawlers lists for verification
  • Add tests to improve efficiency