Изменение пользовательского агента в запросах электронных блоков в конкретный доменJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Изменение пользовательского агента в запросах электронных блоков в конкретный домен

Сообщение Anonymous »

Я строю пользовательский браузер на основе электронов и динамически изменяю пользовательский агент для определенных доменов. Однако после удаления Electron/\* из пользовательского агента для конкретного веб-сайта демонстрационных игр сайт не загружает и бросает ошибки JavaScript.
I перехватывает все исходящие запросы. и изменить пользовательский агент в моем электронном main.js Как это:

Код: Выделить всё

session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
const originalUserAgent = details.requestHeaders['User-Agent'];
const newUserAgent = getUserAgentForURL(originalUserAgent, details.url);

console.log('========================');
console.log('Intercepted Request:');
console.log('URL:', details.url);
console.log('Original User-Agent:', originalUserAgent);
console.log('Modified User-Agent:', newUserAgent);
console.log('========================');

details.requestHeaders['User-Agent'] = newUserAgent;
callback({ cancel: false, requestHeaders: details.requestHeaders });
});
и мой пользователь-agent.js изменяет пользовательский агент, как это:

Код: Выделить всё

const { app } = require('electron');

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

return userAgent;
}

module.exports = { getUserAgentForURL };
< /code>
 Вывод отладки: < /strong>

Когда я пытаюсь получить доступ к веб -сайту демонстрации, я получаю следующие журналы: < /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\""
}
========================
Как я могу успешно изменить агентство пользователя?


Подробнее здесь: https://stackoverflow.com/questions/794 ... fic-domain
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»