【问题标题】:Setting a custom userAgent in HTML or JavaScript在 HTML 或 JavaScript 中设置自定义 userAgent
【发布时间】:2014-06-08 12:51:25
【问题描述】:

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

【问题讨论】:

标签: javascript html get user-agent


【解决方案1】:

这对我有用。

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__

【讨论】:

  • 这在 Windows Google Chrome 版本 78.0.3904.108(官方版本)(64 位)中现在不适合我
【解决方案2】:

您可以在 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 检查这些更改):

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);
    });
});

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 很抱歉,Chromium 抱怨:拒绝设置不安全的标头“用户代理”
    • 与 FF31 相同。
    【解决方案4】:

    您永远不会更改 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

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 2012-09-13
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多