chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

这篇具有很好参考价值的文章主要介绍了chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有能力的可以看官方文档:https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#manifest

有一个需求,想通过插件的方式,修改请求头里面的user-agent,比如修改为iphone的头:

Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25

原本浏览器的请求头是:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36

通过查询发现,v2版本修改请求头的方式为:但是这种方式已经被废弃掉了,因为不安全

  chrome.webRequest.onBeforeSendHeaders.addListener((details) => {
    let reqHeaders = details.requestHeaders;
    if (reqHeaders) {
      reqHeaders.forEach((header) => {
        if (header.name == "User-Agent") {
          header.value = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
          console.log(header.value) //Extension does change the value but it is never applied
        }
      });
    }
    return { requestHeaders: reqHeaders }; //This should apply the new value but doesn't
  }, { urls: ["<all_urls>"] }, ["requestHeaders"]);

所以v3版本使用了声明式网络请求的方式declarativeNetRequest:

chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

1.首先要在Manifest文件中添加一下权限:

chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

    "permissions": [
        "storage",
        "cookies",
        "tabs",
        "declarativeNetRequest",
        "declarativeNetRequestWithHostAccess",
        "declarativeNetRequestFeedback"
    ],
    "declarative_net_request": {
      "rule_resources": [{
        "id": "1",
        "enabled": false,
        "path": "rules_1.json"
      }]
    },

2.需要配置一个规则文件rules_1.json:

配置规则说明:https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#rules

[
    {
        "id": 12,
        "priority": 1,
        "action": {
            "type": "modifyHeaders",
            "requestHeaders": [
                {
                    "header": "user-agent",
                    "operation": "set",
                    "value": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
                }
            ]
        },
        "condition": {
            "urlFilter": "|https*",
            "resourceTypes": [
                "csp_report",
                "font",
                "image",
                "main_frame",
                "media",
                "object",
                "other",
                "ping",
                "script",
                "stylesheet",
                "sub_frame",
                "webbundle",
                "websocket",
                "webtransport",
                "xmlhttprequest"
            ]
        }
    }
]

然后重新加载一下拓展:

chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

然后点击一下,再重新刷一下网页,打开检查,看一下网络请求里面的user-agent是否发生了改变:

可以看到,请求头里面的user-agent已经改变了,并且网页内容已经变成了移动端样式

chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

看一下没有修改之前的页面结构和user-agent:

chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

想要关闭这个修改,只需要将"enabled"改为false即可,然后重新加载拓展,并且点击一下拓展,然后重新刷新网页就可以了chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

但是这种方式就是需要修改manifest文件,非常的不灵活,想要通过点击按钮切换的话,需要用到另外一个api:updateDynamicRules,下一篇文章会讲如何通过点击按钮就可以切换,非常的方便! 文章来源地址https://www.toymoban.com/news/detail-429213.html

到了这里,关于chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VueJs+chrome-extension+element-ui天气预报的小插件

    这里通过chrome-extension + VueJs + element-ui来实现个天气预报的小插件,如下图: 1.1 创建项目         通过vue-cli脚手架3.0版本来创建项目,命令如下: 默认选择是vue2.0语法 Successfully代表安装成功。 这里不是做web项目,所以删除vue-cli3脚手架的部分文件,删除文件如下: src/m

    2024年02月04日
    浏览(46)
  • User-Agent(用户代理)是什么?

    User-Agent 即用户代理,简称“UA”,它是一个特殊字符串头。网站服务器通过识别 “UA”来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息。而网站服务器则通过判断 UA 来给客户端发送不同的页面。 网络爬虫使用程序代码来访问网站,而非人类亲自点击访问,因

    2024年01月20日
    浏览(79)
  • 从User-Agent获取浏览器类型

    User-Agent首部包含一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。  

    2024年02月15日
    浏览(35)
  • 爬虫入门04——requests库中的User-Agent请求头

    “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60”, “Opera/8.0 (Windows NT 5.1; U; en)”, “Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50”, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50”, “Opera/9.80 (Macin

    2024年02月13日
    浏览(41)
  • Python 使用fake_useragent生成随机User-Agent

    大多数情况下,需要设置请求头。而在请求头中,随机更换User-Agent可以避免触发相应的反爬机制。使用第三方库fake-useragent便可轻松生成随机User-Agent。 以下简单介绍fake-useragent的安装使用,以及可能出现的问题和解决方法。 安装: 使用: 生成随机的一个User-Agent 生成指定的

    2024年01月17日
    浏览(41)
  • Python Selenium WebDriver 如何设置请求头用户代理(User-Agent)参数

    在本文中,将演示如何为浏览器设置用户代理,以及如何在Python Selenium WebDriver中读取用户代理。测试中的许多方案都需要操作用户代理。 User-Agent 请求标头包含一个特征字符串,该字符串允许网络协议对等方标识请求软件用户代理的应用程序类型、操作系统、软件供应商或软

    2024年02月15日
    浏览(43)
  • {工作记录}遇到过的网络攻击合集&&爬虫User-Agent记录..{持续更新}

    奇怪的攻击增加了!Exp!up!up! (最新更新时间:2022年10月31日 更新内容:爬虫UA头) “看不懂是啥攻击,所以记一下。”——harusaruhi 2022年5月1日 2022年5月1日 2022年5月2日 2022年5月3日 2022年5月4日 2022年5月8日 2022年5月21日 2022年5月27日 2022年10月5日 2024年1月22日 User-Agent:Xenu Link

    2023年04月14日
    浏览(47)
  • 如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

    京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供了高级的 API,用于控制无头浏览器(Headless Browser),如 C

    2024年02月08日
    浏览(33)
  • 浏览器UA user-agent、windows各版本内核、搜索引擎爬虫UA归类

    ### 浏览器userAgent: 实际上很多浏览器套了壳,核心都是chrome和safari,大部分浏览器UA里面看倒数第二个或第一个字段就可以判断出是啥浏览器了,同一浏览器的UA版本上可能存在差异,但大致相同。 **servo 不支持es6** ```Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:37.0) Servo/1.0 Firefox

    2024年02月02日
    浏览(71)
  • 在Openresty中使用lua语言向请求浏览器返回请求头User-Agent里边的值

    可以参考《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装Openresty。 然后把下边的内容写入到openresty配置文件 /usr/local/openresty/nginx/conf/nginx.conf (根据实际情况进行选择文件): 然后 sudo openresty 启动openresty。 最后在浏览器里

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包