在HTML或JavaScript中设置自定义userAgent

时间:2014-04-23 15:14:20

标签: javascript html get user-agent

有没有办法做到这一点?我正在尝试向网站发送GET请求,但我想自定义我的UserAgent。有没有办法在纯HTML和JavaScript中执行此操作?我希望它能在本地执行。

4 个答案:

答案 0 :(得分:6)

这对我有用。

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

这是code4coffee答案的更新版本,Object.prototype.__defineGetter__()已被弃用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter

答案 1 :(得分:3)

您可以在Javascript中以编程方式执行此操作(此示例模拟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"
});

然后,您可以通过Javascript查看控制台中的更改(当然,通过Javascript检查这些更改):

navigator.userAgent
navigator.appName

这是一个应该有效的测试示例(使用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);
    });
});

答案 2 :(得分:-1)

如果您使用的是XMLHttpRequest,则可以设置自定义请求标头,如:

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

答案 3 :(得分:-1)

您永远不会在HTML中更改用户代理,html是消息不是信使。

事实上,您可以使用javascript代码执行此操作,但如果您将其部署到生产环境中则会很危险。

使用代理切换器更安全:

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

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