网站如何检测Chromium内核的Electron等客户端并非真实Chrome浏览器?
Electron环境被站点识别的常见检测维度
- Electron特有全局对象特征
即便关闭nodeIntegration,Electron环境仍可能残留独有变量,比如window.process、window.electron、window.require等。就算手动删除这些显性变量,window.chrome对象的实现也和原生Chrome存在本质差异:原生Chrome的chrome.runtime、chrome.webstore等接口是完整实现的,Electron下的同类接口要么缺失要么返回值不符合预期,很容易被检测脚本捕捉。另外navigator.plugins、navigator.mimeTypes的列表也存在差异,原生Chrome会内置PDF阅读器等默认插件,Electron的默认插件列表和原生Chrome不一致。 - 底层浏览器指纹特征不匹配
表层navigator属性和UA可以被修改,但大量底层指纹容易被忽略:navigator.webdriver属性:Electron默认该值为true,原生正常运行的Chrome该值为undefined或false- 硬件相关指纹:
navigator.deviceMemory、navigator.hardwareConcurrency、屏幕色域、色深、分辨率等参数如果和UA对应的设备环境不匹配,会被标记异常 - Canvas/WebGL指纹:Electron内置的Chromium渲染逻辑和官方Chrome存在细微像素偏差,WebGL返回的vendor、renderer标识也可能携带Electron相关特征,反爬脚本会将采集到的指纹和官方Chrome样本库比对,不一致就会触发拦截
- 请求层特征差异
除了UA之外,请求层的多个维度也会暴露Electron环境:- 客户端提示头(Client Hints):
Sec-CH-UA、Sec-CH-UA-Platform等头默认会携带Electron的版本标识,或者和UA中声明的Chrome版本不匹配 - 请求头顺序:Electron发起请求时的Header排序规则和原生Chrome存在差异,很多反爬服务会校验Header的顺序特征
- JA3/TLS指纹:Electron的Chromium内核在TLS握手时的加密套件列表、扩展顺序和官方Chrome不同,服务端可以通过JA3指纹直接识别出非原生Chrome环境
- 客户端提示头(Client Hints):
- 运行时行为特征
反爬脚本会在页面加载后采集前置交互行为,比如鼠标移动轨迹、滚动动作、页面停留时长等,如果页面加载后没有任何正常人类交互就触发登录请求,也会被机器人检测拦截。
内容的提问来源于stack exchange,提问作者Ian W
相关产品推荐
相关产品推荐

