【问题标题】:Electron How to set a device type user agentElectron 如何设置设备类型的用户代理
【发布时间】:2020-01-07 21:46:10
【问题描述】:

我正在使用电子制作网络浏览器,我想知道是否有办法让电子报告特定的用户代理信息,以诱使网站认为它们是在手机上而不是在桌面上呈现的。非常感谢任何帮助。

【问题讨论】:

    标签: webview electron user-agent


    【解决方案1】:

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

    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
        });
    });
    

    【讨论】:

      【解决方案2】:

      在 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()
          })
      

      【讨论】:

        猜你喜欢
        • 2014-04-10
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 2020-08-28
        相关资源
        最近更新 更多