在Electron应用中正常访问Google系列网站的正确实现方式是什么?
Electron应用内置浏览器访问Google系站点登录报错的合规解决方案
Google对嵌入式浏览器的登录限制是基于整体安全政策执行的,与你是否隐藏地址栏没有直接关联,修改UA等绕过手段随时可能失效,合规的正式方案如下:
方案1:无额外审核成本的最优方案
- 调用Electron原生
shell.openExternal()接口唤起系统默认浏览器完成Google账号登录流程 - 登录完成后通过自定义应用协议回调,将Google域名下的有效Cookie同步到Electron应用的
session上下文 - 该方案完全符合Google安全规范,不需要你获取、存储任何用户账号数据,即可让内置浏览器获得合法登录态,正常访问所有Google系站点
方案2:必须在内置浏览器中完成全流程登录的方案
- 首先需放弃修改User-Agent的临时绕过方案,该操作属于恶意伪造浏览器标识的行为,会触发Google账号风控,甚至导致用户账号被临时限制
- 向Google提交应用安全审核,申请嵌入式浏览器场景的登录白名单:审核时需明确说明应用必须内置浏览器访问Google服务的合理场景,同时提供地址栏不可篡改、无MITM风险、无流量劫持行为的相关证明
- 开发调试阶段可通过以下配置降低风控触发概率:
const { BrowserWindow } = require('electron') const mainWindow = new BrowserWindow({ // 其余窗口配置省略 webPreferences: { contextIsolation: true, nodeIntegration: false, webSecurity: true, allowRunningInsecureContent: false } }) // 不要完全抹除Electron标识伪造为普通Chrome,避免被判定为恶意伪装 const customUA = `${navigator.userAgent.replace(/ Electron\/[\d.]+/, '')} YourAppName/${yourAppVersion}` mainWindow.webContents.setUserAgent(customUA)
内容的提问来源于stack exchange,提问作者Daniel Sudhindaran
相关产品推荐
相关产品推荐

