Headless Browser Detection: Cách Websites Phát Hiện Bots
Websites ngày càng giỏi phát hiện headless browsers. Bài viết giải thích cách họ detect và cách bạn tránh.
Headless Browser Là Gì?
Browser chạy không có giao diện (GUI), điều khiển bằng code. Ví dụ: Puppeteer, Playwright, Selenium headless mode.
Cách Websites Detect
1. Navigator Properties
// Headless Chrome có:
navigator.webdriver = true // ❌ Giveaway!
navigator.plugins.length = 0
navigator.languages = []
2. Chrome Object
// Normal Chrome có window.chrome
// Headless thường thiếu hoặc khác
3. User-Agent
// Headless UA chứa "HeadlessChrome"
Mozilla/5.0 ... HeadlessChrome/120.0.0.0 ...
4. WebGL Fingerprint
Headless browsers có WebGL renderer khác biệt.
5. Behavioral Analysis
- Mouse movements không tự nhiên
- Không có scroll behavior
- Click quá nhanh
- Không có idle time
Cách Bypass Detection
1. Undetected ChromeDriver (Python)
import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get("https://protected-site.com")
# Tự động patch nhiều detection points
2. Puppeteer Stealth (Node.js)
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();
3. Playwright Stealth
from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
stealth_sync(page)
4. Manual Patches
// Override webdriver property
Object.defineProperty(navigator, 'webdriver', {
get: () => false
});
// Add plugins
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5]
});
Detection Test Sites
- bot.sannysoft.com
- arh.antoinevastel.com/bots/areyouheadless
- browserleaks.com
Best Practices
- Dùng stealth plugins
- Add realistic mouse movements
- Random delays giữa actions
- Kết hợp residential proxy
VinaProxy + Stealth Browsers
- Residential IP giảm suspicion
- Kết hợp với stealth = undetectable
- Giá chỉ $0.5/GB
