- [Pattern] Pattern updates
- [Pattern] Pattern updates for better recognition
- [Pattern] Treat CCleaner broswer as an actual browser, not a bot
- [Pattern] Pattern updates for better recognition
- [Pattern] More accurate patterns for some substrings
- [Pattern] Recognise Owler (Open Web Search Project) as a bot
- [Pattern] Pattern updates: Project LightSpeed browsers are not bots
- [Pattern] Pattern updates
- [Pattern] Pattern updates
- [Pattern] A more careful match for RSS substring
- [Pattern] Recognise timestamp in user agent string - is used to generate unique strings for each request
- [Pattern] Ignore NewsSapphire in-app browser (news app)
- [Pattern] Ignore locales with calendar in user agent
- [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)
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
- Remove default import. Use named import instead:
-
Drop support for EOL node versions
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
- Treat Splash browser as bot @viraptor
- mem: Make a group non capturing
- Fix "news" pattern to allow Google News Android App @pulzarraider
- Add YaDirectFetcher, amaya
- Adjust the "client" substring pattern
- Adjust GOGGalaxy pattern
- Update built files
- Add Speedcurve: Maximilian Haupt
- Exclude specific "client" substrings
- 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 Morningscore
- 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 "package.json" to exports (#165) by javivelasco
- 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
- Typescript definition (isbot) supports any. Where a non-string argument is cast to a string before execution
- Native support for ESM and CommonJS
- Start maintaining a security policy
- 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 AngleSharp parser
- Some Maintenance
- 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 Discourse onebox is used for link preview generation
- Alexa Voice Service
- Reduce complexity by funding more common patterns
- Add 5538 known crawler user agent strings from myip.ms
- Reduce complexity by 79 by introducing "https?:" pattern
- Add Sistrix (SEO)
- JavaOS (Discontinued in 2003)
- 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
- Respond to crawler user agents added to user-agents.net/bots
- Add Rigor synthetic monitoring
Hexometer
- Respond to crawler user agents added to user-agents.net/bots
- Add an "ignoreList" to exclude user agents from user-agents.net
- Respond to crawler user agents added to user-agents.net/bots
Combine all google products: Google browsers' user agent do not contain the word "Google".
- 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)
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
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
- Remove testing on node 6 and 8
- Some crawlers list updates can potentially change identification
- Improve efficiency of rule by optimising some parts and removing others
- Automatically download crawlers lists for verification
- Add tests to improve efficiency