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.
Festlegen eines benutzerdefinierten userAgent in HTML oder JavaScript
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
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");
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
Mögliches Duplikat von Mocking a useragent in javascript?
– APAD1
23. April 2014 um 15:18 Uhr