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

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

可能吗?

解决方法

webRequest API可用于修改User Agent标头.
注意:Developer工具的Network选项卡显示标题.我已经使用 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: [
            "https://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
}

文档

> chrome.webRequest.onbeforeSendHeaders活动
> Request filter

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...