【问题标题】:Associate a custom user agent to a specific Google Chrome page/tab将自定义用户代理关联到特定的 Google Chrome 页面/标签
【发布时间】:2012-05-07 06:34:04
【问题描述】:

我正在开发一个 Google Chrome 扩展程序,我想为标签/页面或弹出窗口(iframe 显示为“气泡弹出窗口”)设置特定的用户代理,而不影响其他页面或标签.

有可能吗?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension http-headers user-agent


    【解决方案1】:

    webRequest API 可用于修改用户代理标头。
    注意:开发者工具中的网络标签显示 old 标头。我已经使用netcat (nc -l 127.0.0.1 -p 6789) 验证了标题设置是否正确。

    在下面的示例中,代码在所有标签上激活。调整request filter 以满足您的要求。添加tabId 以限制此过滤器的功能,使用选项卡的tabId(可通过各种API 获得,尤其是chrome.tabs)。

    background.js

    chrome.webRequest.onBeforeSendHeaders.addListener(
        function(info) {
            // Replace the User-Agent header
            var headers = info.requestHeaders;
            headers.forEach(function(header, i) {
                if (header.name.toLowerCase() == 'user-agent') { 
                    header.value = 'Spoofed UA';
                }
            });  
            return {requestHeaders: headers};
        },
        // Request filter
        {
            // Modify the headers for these pages
            urls: [
                "http://stackoverflow.com/*",
                "http://127.0.0.1:6789/*"
            ],
            // In the main window and frames
            types: ["main_frame", "sub_frame"]
        },
        ["blocking", "requestHeaders"]
    );
    

    manifest.json

    {
      "name": "WebRequest UA test",
      "version": "1.0",
      "permissions": ["webRequest", "webRequestBlocking", "http://*/*"],
      "background": {
        "scripts": ["background.js"]
      },
      "manifest_version": 2
    }
    

    文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 2011-07-25
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      相关资源
      最近更新 更多