navigator.webdriver: що означає прапорець автоматизації і як його використовують сайти
Властивість navigator.webdriver є в кожному сучасному браузері, і скрипти сторінки можуть її прочитати. Вона дорівнює true, коли браузером керує програма автоматизації, і false у браузері, який відкрила людина. Це найдешевша перевірка на ботів і водночас одна з найлегших в обході, тож варто знати, що вона каже, а що лишає відкритим.
Перевірте свій браузер просто зараз
Перевіряю браузер…
Звідки береться прапорець
Стандарт W3C WebDriver, протокол, на якому працює Selenium, описує прапорець «webdriver-active» і вимагає від браузерів показувати його сторінкам як navigator.webdriver. Так роблять Chrome, Firefox, Safari і Edge. Прапорець вмикається, коли браузер запускають під автоматизацією: через chromedriver, geckodriver чи safaridriver для Selenium, а також за замовчуванням у браузерах, які запускають Puppeteer і Playwright.
Як перевірити свій браузер
Відкрийте консоль розробника (F12, вкладка Console) і введіть navigator.webdriver. Браузер, який ви запустили самі, виведе false. Перевірка на цій сторінці читає те саме значення й показує його у звіті разом з іншими слідами автоматизації.
True каже багато, false каже мало
Значення true майже завжди означає автоматизацію: тест, монітор, парсер чи бота. Розробник може побачити його у вікні, яке відкрив тестовий інструмент, але у звичайних відвідувачів його не буває.
Значення false доводить набагато менше. В інструментах автоматизації є налаштування, що запускають браузер без прапорця, а фреймворки для ботів приховують його одним із перших кроків. Прапорець відсіює чесні інструменти й недбалих ботів, решту доводиться ловити іншими сигналами.
Коли прапорець приховують
Скрипт усередині сторінки може змінити те, що повертає властивість, і така зміна зазвичай залишає сліди, які шукає уважна перевірка. Браузер, запущений без прапорця, має чисту властивість, але бот працює там само, де й раніше: часто в дата-центрі, часто з програмним рендерингом і з поведінкою, швидшою й рівнішою за людську. Коли бот надсилає частину запитів поза браузером через HTTP-бібліотеку, його видає ще й TLS-рукостискання цих запитів.
Як використати це на своєму сайті
Прочитати navigator.webdriver у скрипті своєї сторінки легко, але все, що надсилає браузер, можна підробити. Надсилайте значення на сервер разом з іншими сигналами й ухвалюйте рішення там. Якщо сайт відвідують ваші власні тести чи монітори, внесіть їх до списку дозволених, щоб прапорець їх не блокував.
SpoofLens вважає true сильною знахідкою й дає вердикт «автоматизація». Через API та плагін для WordPress / WooCommerce ви отримуєте цей вердикт із причинами для кожної реєстрації чи замовлення.
Часті запитання
- Чому в моєму браузері navigator.webdriver дорівнює true?
- Браузер запустив інструмент автоматизації: тестовий фреймворк, парсер, RPA-робот чи хмарний браузерний сервіс. Закрийте це вікно й відкрийте браузер звичайним способом, і значення повернеться до false.
- Чи достатньо перевірки navigator.webdriver, щоб зупинити ботів?
- Ні. Вона зупиняє інструменти, які самі про себе повідомляють. Боти, створені для зловживань, її приховують, тому поєднуйте її з перевірками узгодженості, мережі й поведінки.
- Чи блокує SpoofLens відвідувачів із цим прапорцем?
- Сам SpoofLens нікого не блокує. API повертає вердикт, а плагін для WordPress / WooCommerce блокує автоматизовані браузери, лише якщо ви ввімкнете це налаштування.