能否使用JavaScript检测Selenium Undetected Chromedriver的存在?
检测Undetected Chromedriver存在的JavaScript脚本
检测思路
Undetected Chromedriver虽针对Selenium检测做了大量隐藏处理,但仍会残留可被识别的特征,以下脚本通过多维度特征校验判断其存在:
检测脚本
function isUndetectedChromedriver() { // 1. 检查旧版Undetected Chromedriver遗留的全局属性 if (window.cdc_adoQpoasnfa76pfcZLmcfl_) { return true; } // 2. 校验navigator.webdriver状态及Chrome自动化环境特征 const webdriverStatus = navigator.webdriver; if (webdriverStatus === false || (webdriverStatus === undefined && typeof chrome !== 'undefined')) { // 结合无头模式特征辅助判断 const isHeadless = navigator.userAgent.includes('HeadlessChrome') || window.navigator.plugins.length === 0; if (isHeadless) { return true; } } // 3. 扫描页面脚本中的特征关键词 const allScripts = document.querySelectorAll('script'); for (const script of allScripts) { if (script.textContent.includes('undetected') || script.textContent.includes('chromedriver')) { return true; } } return false; } // 执行检测并输出结果 console.log(isUndetectedChromedriver() ? "检测到 Undetected Chromedriver" : "未检测到 Undetected Chromedriver");
各检测点说明
- 全局属性检测:旧版Undetected Chromedriver会在
window对象上注入特定标识属性,新版虽已移除,但仍可作为兼容检测项。 - Webdriver状态校验:正常Chrome浏览器中
navigator.webdriver默认是undefined,而Undetected Chromedriver会强制将其设为false;同时结合无头模式的典型特征(UserAgent包含HeadlessChrome、浏览器插件数量为0)缩小判断范围。 - 脚本关键词扫描:部分场景下Undetected Chromedriver会注入隐藏脚本以规避检测,这些脚本中常包含特征关键词。
内容的提问来源于stack exchange,提问作者Hafiz Muhammad Bilal
相关产品推荐
相关产品推荐

