Я строю пользовательский браузер на основе электронов и динамически изменяю пользовательский агент для определенных доменов. Однако после удаления Electron/\* из пользовательского агента для конкретного веб-сайта демонстрационных игр сайт не загружает и бросает ошибки JavaScript.
I перехватывает все исходящие запросы. и изменить пользовательский агент в моем электронном main.js Как это:
Я строю пользовательский браузер на основе электронов и динамически изменяю пользовательский агент для определенных доменов. Однако после удаления Electron/\* из пользовательского агента для конкретного веб-сайта демонстрационных игр сайт не загружает и бросает ошибки JavaScript. I перехватывает все исходящие запросы. и изменить пользовательский агент в моем электронном main.js Как это: [code]session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => { const originalUserAgent = details.requestHeaders['User-Agent']; const newUserAgent = getUserAgentForURL(originalUserAgent, details.url);
const REMOVE_ELECTRON_COMPONENTS = [ / Electron\/([^\s]+)/g, // Removes Electron ` ${app.name}/${app.getVersion()}`, // Removes app-specific info ];
function getUserAgentForURL(userAgent, url) { if (typeof userAgent !== 'string') { console.error(`Error: Expected userAgent to be a string, but got ${typeof userAgent}`); return userAgent || 'Mozilla/5.0'; }
let componentsToRemove = [...REMOVE_ELECTRON_COMPONENTS];
// Remove Electron-specific components but keep Chrome componentsToRemove.forEach((x) => { if (userAgent) { userAgent = userAgent.replace(x, ''); } });
Когда я пытаюсь получить доступ к веб -сайту демонстрации, я получаю следующие журналы: < /p> ======================== Intercepted Request: URL: https://[removed-domain]/game-assets/other_resources.json Original User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) my-electron-app/1.0.0 Chrome/132.0.6834.159 Electron/34.0.2 Safari/537.36 Modified User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.159 Safari/537.36 ======================== < /code> Тем не менее, веб-сайт не загружает и не бросает ошибки JavaScript в консоли: < /p> [96308:0201/114327.613:INFO:CONSOLE(5657)] "Uncaught TypeError: Cannot read properties of undefined (reading 'split')", source: https://[removed-domain]/build.js (5657)
[96308:0201/114327.616:INFO:CONSOLE(18588)] "Uncaught TypeError: Cannot read properties of null (reading 'length')", source: https://[removed-domain]/logo_info.js (18588) < /code> Когда я не изменяю пользовательский агент, веб-сайт работает отлично и отправляет следующий успешный запрос: < /p> ======================== Intercepted Request: URL: https://[removed-domain]/gs2c/ge/v4/game Method: POST Headers: { "host": "[removed-domain]", "connection": "keep-alive", "content-length": "145", "accept": "*/*", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "en-US", "content-type": "application/x-www-form-urlencoded", "origin": "https://[removed-domain]", "referer": "https://[removed-domain]/gs2c/html5Game.do?extGame=1&symbol..", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) my-electron-app/1.0.0 Chrome/132.0.6834.159 Electron/34.0.2 Safari/537.36", "sec-ch-ua": "\"Not A(Brand\";v=\"8\", \"Chromium\";v=\"132\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"" } ======================== [/code] Как я могу успешно изменить агентство пользователя?