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 () =>
The Code
from selenium import webdriver from selenium.webdriver.chrome.options import Options import timedef 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.