javascript - 将自定义用户代理关联到特定的 Google Chrome 页面/标签

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

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

这可能吗?

最佳答案

webRequest API可用于修改用户代理 header 。
注意:开发人员工具中的网络选项卡显示 header 。我已使用 netcat 验证 header 设置正确(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"]
);

list .json

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

文档

关于javascript - 将自定义用户代理关联到特定的 Google Chrome 页面/标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10334909/

相关文章:

javascript - 当另一个 div 到达页面顶部时简单的 CSS 更改

javascript - 使用 chrome 的单个用户不会出现导航菜单

html - Internet Explorer 的目录上传

google-chrome - Protractor woant 运行我的脚本

javascript - 如何防止 chrome 扩展在同一弹出窗口仍然打开时重新打开它?

javascript - 加载 CSS 和/或 JS 的 Django 问题

javascript - 如何根据元素的属性将纸质列表框中的某些元素设为一种颜色,将其他元素设为另一种颜色?

javascript - AngularJS 指令 - 从 $rootscope 接收广播

javascript - 后台脚本的 sendResponse 中数组数据丢失

firefox - 禁用带有插件或扩展名的单个 javascript 文件