【发布时间】:2020-01-07 21:46:10
【问题描述】:
我正在使用电子制作网络浏览器,我想知道是否有办法让电子报告特定的用户代理信息,以诱使网站认为它们是在手机上而不是在桌面上呈现的。非常感谢任何帮助。
【问题讨论】:
标签: webview electron user-agent
我正在使用电子制作网络浏览器,我想知道是否有办法让电子报告特定的用户代理信息,以诱使网站认为它们是在手机上而不是在桌面上呈现的。非常感谢任何帮助。
【问题讨论】:
标签: webview electron user-agent
有几种方法可以做到这一点:
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()
})
【讨论】: