const { app, BrowserWindow, session } = require('electron/main') const path = require('node:path') const androidUA = 'Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.164 Mobile Safari/537.36' const createWindow = () => { const win = new BrowserWindow({ width: 1280, height: 800, webPreferences: { preload: path.join(__dirname, 'preload.js'), contextIsolation: false, // Allows easier access to contentWindow nodeIntegration: true, nodeIntegrationInSubFrames: true, webSecurity: false, // CRITICAL: Allows cross-origin history control sandbox: false, // Disables the internal Electron sandbox webviewTag: true, // Add this! } }) win.webContents.session.setUserAgent(androidUA) win.maximize() // Maximize win.loadFile('src/index.html') } app.whenReady().then(() => { const sess = session.defaultSession sess.webRequest.onBeforeSendHeaders((details, callback) => { details.requestHeaders['User-Agent'] = androidUA; details.requestHeaders['Sec-CH-UA-Mobile'] = '?1'; details.requestHeaders['Sec-CH-UA-Platform'] = '"Android"'; callback({ requestHeaders: details.requestHeaders }); }); sess.webRequest.onHeadersReceived((details, callback) => { const responseHeaders = { ...details.responseHeaders }; const headersToRemove = ['x-frame-options', 'content-security-policy']; Object.keys(responseHeaders).forEach(header => { if (headersToRemove.includes(header.toLowerCase())) { delete responseHeaders[header]; } }); callback({ cancel: false, responseHeaders: responseHeaders }); }); createWindow() app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } })