Bot.sannysoft ((link)) -

Bot.sannysoft.com is a popular, free online testing tool used by developers and security researchers to check for "browser leaks" that reveal whether a web browser is being controlled by automated software (a bot) rather than a human user. 🔍 Purpose & Function

The site acts as a benchmark for evasion techniques. When you visit the page, it runs a suite of JavaScript tests to see if your browser reveals typical signs of automation, such as:

Webdriver Presence: Checking if navigator.webdriver is set to true.

Headless Flags: Detecting if the browser is running in "headless" mode (without a visual interface). bot.sannysoft

Chrome-Specific Variables: Looking for internal variables like $cdc_ or specific Chrome runtime properties.

Hardware Inconsistencies: Verifying if reported screen resolution, color depth, or CPU cores match what a real device would typically show. 🛠️ Common Use Cases

Reinventing the wheel while learning about bot detection - GitHub Puppeteer (Node


1. Validating Headless Chrome/Firefox

When you run Selenium inside a Docker container (e.g., selenium/standalone-chrome-debug), there is no GUI. Running a simple driver.get("https://google.com") might pass, but that doesn't test rendering. bot.sannysoft explicitly tells you if the headless browser is rendering fonts and canvases correctly.

Q: Does bot.sannysoft collect my data?

The public page does not appear to send data to a remote server. However, as a best practice, do not run it on pages containing secrets. Use it only for diagnostic purposes in isolated environments.


Puppeteer (Node.js) Example

const puppeteer = require('puppeteer');

(async () => const browser = await puppeteer.launch( headless: 'new' ); const page = await browser.newPage(); await page.goto('https://bot.sannysoft.com'); await page.screenshot( path: 'puppeteer-test.png', fullPage: true ); console.log('Diagnostic complete.'); await browser.close(); )(); (async () =&gt

The Code

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

def test_bot_sannysoft(): # Configure headless Chrome chrome_options = Options() chrome_options.add_argument("--headless=new") # New headless mode chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--window-size=1920,1080")

# Initialize driver
driver = webdriver.Chrome(options=chrome_options)
try:
    # Navigate to the diagnostic page
    print("Navigating to bot.sannysoft...")
    driver.get("https://bot.sannysoft.com")
# Wait for all dynamic content to load
    time.sleep(3)
# Take a screenshot for manual review
    driver.save_screenshot("sannysoft_diagnostic.png")
    print("Screenshot saved: sannysoft_diagnostic.png")
# Check page title to confirm load
    assert "SannySoft" in driver.title
    print("✅ bot.sannysoft loaded successfully.")
# Optional: Check for specific elements
    canvas_present = driver.find_elements(By.TAG_NAME, "canvas")
    print(f"Canvas elements found: len(canvas_present)")
finally:
    driver.quit()

if name == "main": test_bot_sannysoft()

3. Performance Baselines

The page includes timestamps and load-time metrics. By running bot.sannysoft before and after a server update, you can benchmark rendering speed in a controlled environment.