What is Guillotine?

Guillotine is an advanced headless browser evasion framework designed to defeat traditional detection techniques. Unlike tools that perform browser automation, Guillotine does not automate interactions itself. Instead, it acts as a runtime patching toolkit for headless Chromium environments (e.g., Puppeteer, Playwright), modifying internal behaviors and DOM properties to evade bot-detection scripts.

It works by intercepting and rewriting JavaScript properties and functions typically used to identify headless environments. For example, it modifies or removes navigator.webdriver, fixes inconsistencies in permissions.query(), patches WebGLRenderingContext outputs, and alters function.toString() results.

  • Injects stealth patches at runtime into Chromium-based headless browsers
  • Fakes entropy and system-level signals to closely mimic human browser behavior
  • Neutralizes fingerprinting attempts using JavaScript traps
  • Commonly integrated with Puppeteer or Playwright in malicious scraping or fraud botnets

 

Because Guillotine runs silently within a Chromium-based headless session, it can be difficult to detect using traditional browser fingerprinting methods. Its effectiveness lies in how well it mimics a real user session, down to canvas, audio, and font rendering levels.

What is Guillotine used for?

Guillotine is used as a stealth enhancement layer for headless browsers. Its primary function is to evade detection systems that rely on fingerprinting or behavior analysis to identify non-human traffic. While it has legitimate use cases in research and automated testing, it is increasingly associated with adversarial automation and fraud.
Common use cases include:

  • Enhancing Puppeteer-based scraping bots to appear human
  • Bypassing browser fingerprinting defenses on websites and login flows
  • Evading anti-bot JavaScript that tests for headless artifacts like navigator.webdriver
  • Supporting credential stuffing, inventory scalping, and account enumeration bots
  • Powering click fraud and ad fraud operations by spoofing real user interactions

 

Because Guillotine operates at the JavaScript layer, it is highly flexible and can adapt to changes in detection techniques. Its ability to mask both static and behavioral anomalies makes it a popular choice for adversaries targeting high-value web applications and authentication systems.

How to detect Guillotine headless browser?

Detecting Guillotine requires deeper inspection of browser behavior beyond simple fingerprinting. It is best approached with multi-layered, heuristic-based detection.
Detection signals:

  • Inconsistencies in JavaScript behavior — patched values like navigator.webdriver may be undefined, but deeper inspection (e.g., iframe-based probing) can still reveal automation context
  • Anomalous Function.prototype.toString() output — patched functions may appear native but lack expected behavior under dynamic inspection
  • Canvas and audio fingerprint evasion — Guillotine may return valid entropy, but values often repeat across sessions or differ subtly from real browsers
  • Permissions API anomalies — Notification.permission and permissions.query() behaviors are often incorrectly spoofed
  • WebGL and GPU anomalies — WebGLRenderer or shader output may show signs of spoofing or low entropy
  • Timing and event trace inconsistencies — mouse, scroll, and input events may not follow real human rhythm, even with patched telemetry

 

Blocking strategies:

  • Implement multi-factor fingerprinting that includes time-based entropy analysis and cross-checks between unrelated signals
  • Use iframe-based rechecks that verify browser behavior from multiple execution contexts
  • Deploy behavioral detection (e.g., movement curves, typing delay variance) to profile non-human interactions
  • Test for over-patched environments — e.g., all detection flags appearing “perfect” may itself be a signal of evasion
  • Regularly rotate detection scripts and challenge-response logic to stay ahead of patchers like Guillotine
  • Integrate dynamic JavaScript traps that trigger unique responses from stealth-patched browsers
DataDome

See which bots and AI agents bypass your defenses

Create your account to start analyzing and mitigating malicious bots and AI-drive threats in real-time