电子如何设置设备类型用户代理
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()
})
我正在使用 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()
})