电子如何设置设备类型用户代理

Electron How to set a device type user agent

我正在使用 electron 制作一个网络浏览器,我想知道是否有办法让 electron 报告特定的用户代理信息来欺骗网站认为它们是在 phone 而不是一个桌面。非常感谢任何帮助。

有几种方法可以做到这一点:

1) 使用 BrowserWindow 对象

win = new BrowserWindow({width: 800, height: 600});
win.loadURL('http://my-website/foo.html', {
    userAgent: 'MyFakeAgent/1.0'
});

2) 在<webview>

里面
<webview src="http://my-website/foo.html" useragent="MyFakeAgent/1.0"></webview>

3) 在主进程中使用onBeforeSendHeaders回调

import { session } from 'electron';

session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
    details.requestHeaders['User-Agent'] = 'MyFakeAgent/1.0';
    callback({
        cancel: false,
        requestHeaders: details.requestHeaders
    });
});

另一种处理 BrowserWindow 中所有 webview 实例的解决方案(在下面的代码中称为 mainWindow)。


    const getUserAgentString = () => {
      let userAgentString = 'ElectronApp/' + app.getVersion()
      userAgentString += " Electron/" + process.versions.electron
      userAgentString += " Chrome/" + process.versions.chrome
      userAgentString += " Node.js/" + process.versions.node
      return userAgentString
    }
    //where mainWindow = new BrowserWindow(browserWindowOptions)
    mainWindow.webContents.on('did-attach-webview', function (event, webContents) {
        webContents.userAgent = getUserAgentString()
    })