Skip to content

Bot Detection

Detect automated browsers, headless Chrome, and popular automation frameworks.

Usage

ts
const fp = await neoprint.get()
const bot = neoprint.detectBot(fp)

console.log(bot.isBot)    // true / false
console.log(bot.score)    // 0.0 – 1.0
console.log(bot.signals)  // ['webdriver_present', ...]

Detected Signals

SignalWeightWhat it detects
webdriver_present3navigator.webdriver === true
languages_empty2No languages configured
plugins_empty1No browser plugins
phantom_properties3PhantomJS globals
selenium_traces3Selenium document properties
puppeteer_traces3Puppeteer evaluation script marker
playwright_traces3Playwright globals
nightmare_traces3Nightmare.js globals
cdc_traces3ChromeDriver $cdc_ properties
headless_chrome3HeadlessChrome in UA
missing_chrome_runtime1Chrome UA but no chrome.runtime
window_outersize_zero2Zero window dimensions
screen_size_zero3Zero screen dimensions
native_function_spoofed2Overridden native functions
error_stack_anomaly2Automation in error stack traces

Score Threshold

A score of 0.2+ triggers isBot: true. The score is weighted — high-confidence signals (webdriver, headless UA) contribute more than low-confidence ones (missing plugins).

Released under the MIT License.