What Is a Selenium Browser Fingerprint?
A Selenium browser fingerprint is a collection of detectable characteristics that reveal when a
website is being accessed through Selenium WebDriver automation rather than a human using a normal browser. Websites
use these fingerprints to block bots, scrapers, and automated testing tools.
Selenium, while designed for browser automation and testing, leaves numerous traces that anti-bot systems can detect.
Understanding and concealing these fingerprints is essential for web scraping, automated testing, and any
Selenium-based automation.
How Websites Detect Selenium
1. WebDriver Property Detection
The most obvious Selenium indicator:
JavaScript Detection:
navigator.webdriverreturnstruein Selenium- Normal browsers return
undefinedorfalse - Single line of JavaScript detects Selenium instantly
Detection Code:
if (navigator.webdriver === true) {
console.log("Selenium detected!");
// Block or challenge the user
}
2. Chrome/ChromeDriver Properties
Selenium leaves specific Chrome automation markers:
window.chromeproperty exists in normal Chrome- Often missing or incomplete in Selenium
window.chrome.runtimedetection- ChromeDriver-specific variables in JavaScript
3. Plugin and Extension Detection
Selenium browsers have unusual plugin configurations:
- Different plugin count than normal browsers
- Missing expected plugins (PDF viewer, etc.)
- No extensions installed (normal users have 3-5 average)
navigator.plugins.length === 0is suspicious
4. Language Properties
Language configuration differences:
navigator.languagesvsnavigator.languagemismatch- Selenium often has empty or incorrect language arrays
- Accept-Language header inconsistencies
5. Permission API Differences
Permission behavior reveals automation:
- Permissions API responses differ in Selenium
- Notification permission queries behave differently
- Geolocation permission handling is inconsistent
6. User-Agent and Platform Mismatches
Inconsistent platform signals:
- User-Agent claims Windows but
navigator.platformsays Linux - Headless Chrome identifiable through user-agent
- Missing expected features for claimed platform
7. Behavioral Detection
Non-human interaction patterns:
- Mouse Movement: Perfectly straight lines or no movement
- Timing: Superhuman click/type speeds
- Scrolling: Programmatic vs natural scroll patterns
- Consistency: Identical timing across actions
8. Browser Fingerprint Peculiarities
Selenium-specific fingerprint characteristics:
- Canvas fingerprints that match automation patterns
- WebGL renderer strings revealing virtual/headless environments
- Audio context showing automation
- Screen resolution mismatches (window vs screen size)

Advanced Selenium Detection Techniques
CDP (Chrome DevTools Protocol) Detection
Selenium uses CDP for automation:
- CDP runtime leaves detectable traces
- Specific CDP calls create JavaScript artifacts
- CDP-injected properties visible to websites
iframe Testing
Differences in iframe behavior:
- Selenium handles iframes differently than browsers
- contentWindow properties reveal automation
- Execution context switching detectable
Performance Timing
Navigation and performance APIs show patterns:
performance.timingvalues unrealistic- Instant page loads impossible for real users
- Missing intermediate timing events
Making Selenium Undetectable
Basic Selenium Stealth Techniques
1. Remove WebDriver Property (Chrome/Edge):
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)
# Remove navigator.webdriver property
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
2. Spoof User-Agent:
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')
3. Use Stealth Libraries:
Install selenium-stealth:
pip install selenium-stealth
from selenium_stealth import stealth
stealth(driver,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
Advanced Anti-Detection
1. Proper Window Size:
# Match common real user resolutions
driver.set_window_size(1920, 1080)
2. Add Human-Like Delays:
import random
import time
def human_delay():
time.sleep(random.uniform(0.5, 2.0))
# Between actions
element.click()
human_delay()
3. Simulate Mouse Movement:
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element(element)
actions.pause(random.uniform(0.1, 0.5))
actions.click()
actions.perform()
4. Handle Cookies and Storage:
# Load cookies from real browsing session
cookies = json.load(open('cookies.json'))
for cookie in cookies:
driver.add_cookie(cookie)

Limitations of Selenium Stealth
Even with all techniques, Selenium has fundamental limitations:
Persistent Detection Vectors
- Browser Version Lag: Selenium WebDriver versions trail browser releases
- CDP Traces: Chrome DevTools Protocol usage detectable
- Behavioral Patterns: Perfect automation still looks robotic
- Advanced Fingerprinting: Sophisticated anti-bot services detect stealth attempts
Sites with Strong Anti-Bot
Major platforms with advanced detection:
- Google (reCAPTCHA v3): Behavioral AI analysis
- Cloudflare: Advanced bot detection
- PerimeterX, DataDome: Enterprise anti-bot services
- Social Media: Facebook, LinkedIn, Twitter all detect Selenium
Alternative Approaches to Selenium
1. Playwright (Better Stealth)
Modern automation framework with better stealth:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto('https://example.com')
Advantages over Selenium:
- Better default stealth characteristics
- Faster execution
- Built-in network interception
- More modern architecture
2. Puppeteer with Stealth Plugin
Node.js browser automation:
const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://example.com')
3. Real Browser Automation (Send.win Approach)
Use actual browsers without automation markers:
- Real Chrome/Firefox instances
- No WebDriver property
- No CDP traces
- Authentic browser fingerprints
Send.win: Undetectable Browser Automation
For users who need Selenium-like automation without detection, Send.win provides a fundamentally
different approach.
Send.win’s Advantage Over Selenium
Real Browser Instances:
Send.win runs actual Chrome browsers, not WebDriver-controlled instances:
- No
navigator.webdriverproperty - No ChromeDriver artifacts
- No CDP detection vectors
- Indistinguishable from human browsing
Authentic Fingerprints:
Each browser profile has genuine fingerprints:
- Real Canvas, WebGL, Audio fingerprints
- Proper plugin configurations
- Authentic browser properties
- Passes all detection tests
Automation Capabilities:
While Send.win focuses on multi-account management, it enables automation through:
- Session persistence (stay logged in)
- Profile sharing with automation tools
- API for programmatic control
- Cookie and credential management
Selenium vs Send.win Comparison
| Aspect | Selenium (Stealthed) | Send.win |
|---|---|---|
| Detection Risk | Medium-High | ✅ Very Low |
| Setup Complexity | High (code + stealth) | ✅ Simple (no code) |
| Fingerprint Quality | Synthetic | ✅ Authentic |
| Scalability | Limited by resources | ✅ Cloud-based (unlimited) |
| Maintenance | Constant updates needed | ✅ Automatic |
| Use Case | Testing, scraping | ✅ Multi-account + automation |
Frequently Asked Questions
Can Selenium ever be truly undetectable?
No. Selenium’s architecture requires WebDriver, which sophisticated detection systems can identify. However, stealth
techniques work against basic detection on many sites.
Is using undetectable Selenium legal?
Using automation tools is legal. However, using them to violate website Terms of Service or scrape copyrighted
content may have legal consequences.
What’s the best Selenium stealth library?
For Python: selenium-stealth or undetected-chromedriver. For JavaScript:
puppeteer-extra-plugin-stealth.
Why do websites block Selenium?
To prevent: automated account creation, scraping copyrighted content, ticket/product sniping, DDoS attacks,
fraudulent activities.
Can I use Selenium for social media automation?
Platforms like Facebook, Instagram, LinkedIn aggressively detect and ban Selenium. Professional tools like Send.win
are necessary for reliable automation.
Conclusion
Selenium browser fingerprints reveal automation through numerous technical markers. While stealth techniques help,
sophisticated detection systems can still identify WebDriver-based automation.
For users requiring undetectable browsing for multi-account management or sensitive automation,
Send.win’s real browser approach eliminates detection risks entirely while providing professional
fingerprint management.
Try Send.win’s free demo and experience truly undetectable browser automation without Selenium’s tell-tale
fingerprints.
Related Resources
Explore more guides on browser privacy and multi-account management:
