首页 > 解决方案 > 网站如何能够检测到使用 Chromium(如 Electron)的浏览器不是 Chrome 本身?

问题描述

我在 Electron 中制作了一个应用程序(它使用 Chromium 来呈现 Web 内容)来帮助在 SoundCloud 等特定网站上执行一些任务。

这是webview代码:

<webview partition="persist:default" webpreferences="nodeIntegration=no, contextIsolation=no, enableRemoteModule=yes, worldSafeExecuteJavaScript=yes, webSecurity=yes, allowRunningInsecureContent=no, plugins=yes, scrollBounce=yes, navigateOnDragDrop=yes, safeDialogs=yes, backgroundThrottling=no, nativeWindowOpen=yes, spellcheck=yes" src="https://soundcloud.com/discover" allowpopups=""></webview>

我正在使用最新版本的 Electron,并将用户代理设置为webview通常是 Chrome 的用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36

这是navigator在控制台中记录对象的结果webview

在此处输入图像描述

这是在navigator同一台计算机上登录真正的 Chrome 浏览器的结果:

在此处输入图像描述

但是,某些网站能够以某种方式检测到浏览器不是真正的 Chrome。例如,当尝试在 中登录 SoundCloud 时webview,会出现错误“我们的机器人认为您是机器人”,而登录 Chrome 本身时不会出现此错误。

在此处输入图像描述

SoundCloud(和其他网站)还能检查哪些内容,使其相信它不是真正的 Chrome 的合法版本?该对象是我能想到的所有对象,但它似乎与真实 Chromenavigator中的对象完全相同。navigatorwebview 中没有执行其他代码,因此站点必须在登录前检查某些内容。

标签: javascriptsecurityelectronfrontend

解决方案


推荐阅读