Festlegen eines benutzerdefinierten userAgent in HTML oder JavaScript

Lesezeit: 2 Minuten

Gibt es eine Möglichkeit, dies zu tun? Ich versuche, eine GET-Anfrage an eine Website zu senden, aber ich möchte meinen UserAgent anpassen. Gibt es eine Möglichkeit, dies in reinem HTML und JavaScript zu tun? Ich möchte, dass alles lokal ausgeführt wird.

  • Mögliches Duplikat von Mocking a useragent in javascript?

    – APAD1

    23. April 2014 um 15:18 Uhr


Benutzer-Avatar
Peter Rhodos

Das funktioniert für mich.

Object.defineProperty(navigator, 'userAgent', {
    get: function () { return 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0)'; }
});

Es ist eine aktualisierte Version der Antwort von code4coffee Object.prototype.__defineGetter__() ist veraltet: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__

  • Dies funktioniert bei mir derzeit nicht in Windows Google Chrome Version 78.0.3904.108 (Offizieller Build) (64-Bit)

    – Ryan

    16. Dezember 2019 um 17:53 Uhr

  • @Ryan, weil dieser Header jetzt schreibgeschützt ist

    – Lawine1

    18. Februar um 11:28 Uhr

Benutzer-Avatar
Code4Kaffee

Sie können dies programmgesteuert in Javascript tun (dieses Beispiel simuliert Firefox):

navigator.__defineGetter__('userAgent', function () {
    return "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0)"
});
navigator.__defineGetter__('appName', function () {
    return "Netscape"
});

Die Änderungen kann man dann in der Konsole einsehen (und natürlich per Javascript prüfen):

navigator.userAgent
navigator.appName

Hier ist ein Beispiel für einen Test, der funktionieren sollte (mit Jasmine):

describe("isUserAgentInternetExplorer", function () {
    it("should return false for Firefox", function () {
        navigator.__defineGetter__('userAgent', function () {
            return "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0)"
        });
        navigator.__defineGetter__('appName', function () {
            return "Netscape"
        });
        //your code here...
        expect(...your code here...).toEqual(false);
    });
});

2022

Sie dürfen die folgenden Header nicht ändern, gemäß Rufen Sie die WHATWG-Spezifikation ab.
Und im Jahr 2022 haben alle Evergreen-Browser diese Anforderung implementiert.

`Accept-Charset`
`Accept-Encoding`
`Access-Control-Request-Headers`
`Access-Control-Request-Method`
`Connection`
`Content-Length`
`Cookie`
`Cookie2`
`Date`
`DNT`
`Expect`
`Host`
`Keep-Alive`
`Origin`
`Referer`
`TE`
`Trailer`
`Transfer-Encoding`
`Upgrade`
`Via`

Sowie Header, beginnend mit proxy- oder sec-.

These are forbidden so the user agent remains in full control over them.

Wenn Sie eine XMLHttpRequest verwenden, können Sie einen benutzerdefinierten Request-Header wie folgt festlegen:

var xhr = new XMLHttpRequest(...);
xhr.setRequestHeader("User-Agent","test");

Benutzer-Avatar
wako

Sie werden niemals einen Benutzeragenten in HTML ändern, HTML ist die Nachricht, kein Messenger.

In der Tat können Sie dies mit einem Javascript-Code tun, aber es ist gefährlich, wenn Sie ihn jemals in der Produktion einsetzen.

Es ist viel sicherer, einen Agentenumschalter zu verwenden:

https://addons.mozilla.org/fr/firefox/addon/user-agent-switcher/

https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg

1017350cookie-checkFestlegen eines benutzerdefinierten userAgent in HTML oder JavaScript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy