Setting a custom userAgent in HTML or JavaScript

前端 未结 4 1435
野趣味
野趣味 2020-12-17 10:03

Is there any way to do this? I\'m trying to send a GET request to a website, but I want to customize my UserAgent. Is there any way to do this in pure HTML and JavaScript? I

相关标签:
4条回答
  • 2020-12-17 10:50

    If you are using a XMLHttpRequest you can set a custom Request Header like:

    var xhr = new XMLHttpRequest(...);
    xhr.setRequestHeader("User-Agent","test");
    
    0 讨论(0)
  • 2020-12-17 10:54

    You will never change a user Agent in HTML, html is the message not messenger.

    Indeed you can do it with a javascript code, but it's dangerous if you ever deploy it in production.

    It's far safer to use an agent switcher:

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

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

    0 讨论(0)
  • 2020-12-17 11:04

    This is working for me.

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

    It is an updated version of code4coffee's answer as Object.prototype.__defineGetter__() is deprecated: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter

    0 讨论(0)
  • 2020-12-17 11:04

    You can programmatically do this in Javascript (this example mocks up 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"
    });
    

    You can then view the changes in the console via (and of course check these via Javascript):

    navigator.userAgent
    navigator.appName
    

    Here's an example of a test that should work (using 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);
        });
    });
    
    0 讨论(0)
提交回复
热议问题