Ändern der Benutzer-Agent in Elektronenblöcken Anforderungen an eine bestimmte DomäneJavaScript

Javascript-Forum
Anonymous
 Ändern der Benutzer-Agent in Elektronenblöcken Anforderungen an eine bestimmte Domäne

Post by Anonymous »

Ich erstelle einen benutzerdefinierten elektronenbasierten Browser und ändere das Benutzer-Agent für bestimmte Domänen dynamisch. Nach dem Entfernen von Elektronen/\* für eine bestimmte Demo-Gaming-Website aus dem Benutzer-Agent wird die Website jedoch nicht geladen und wirft JavaScript-Fehler aus. und ändern Sie den Benutzer-Agent in meinem Electron Main.js wie folgt:

Code: Select all

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 });
});
und mein user-agent.js verändert das Benutzer-Agent wie folgt:

Code: Select all

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>
 Debugging -Ausgabe: < /strong>

Wenn ich versuche, auf eine Demo -Spielwebsite zuzugreifen, erhalte ich die folgenden Protokolle: < /p> < BR /> 
========================
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>
Die Website wird jedoch nicht geladen und wirft JavaScript-Fehler in die Konsole aus: < /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>
Wenn ich die Benutzer-Agent nicht ändern, funktioniert die Website perfekt und sendet die folgende erfolgreiche Anfrage: < /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\""
}
========================
Wie kann ich den Benutzer-Agent erfolgreich ändern? > Ich habe getestet, das Benutzer-Agent mit der Erweiterung "Benutzer-Agent-Switcher für Chrome" zu ändern. Das Spiel wurde jedoch immer noch nicht geladen, was darauf hinweist, dass Chrome die Änderungen der Erweiterung ignoriert hat. < /p>
Geöffnete DevTools (F12) → Netzwerk-Registerkarte.
Klick auf das Wi-Fi-Symbol (unten links). Standard. : < /p>
Deaktiviert "Browser-Standard-Benutzer-Agent verwenden".
Die geänderte Benutzer-Agent manuell eingegeben. Frage:
Wie können wir in Elektron automatisch von Chrom über Chrom gesteuert werden "Browser-Standardbenutzer-Agent". in Elektron/Chrom, um diese Einstellung zu überschreiben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post