Chrome API修改User-Agent不生效?技术问题求助
Chrome扩展修改User-Agent不生效的问题解决
你的代码无法生效主要有两个核心问题:
1. 监听函数缺少blocking权限
chrome.webRequest.onBeforeSendHeaders要修改请求头,必须在第三个参数中添加"blocking"——这个权限允许扩展暂停请求流程,修改请求头后再放行。仅传入["requestHeaders"]只能读取请求头,无法让修改生效。
2. Manifest未配置必要权限
需要在manifest.json中声明webRequest、webRequestBlocking以及目标URL权限,否则扩展没有拦截和修改请求的权限。
修正后的代码
chrome.webRequest.onBeforeSendHeaders.addListener((details) => { let reqHeaders = details.requestHeaders; if (reqHeaders) { // 忽略大小写匹配User-Agent,避免因浏览器内部大小写差异导致匹配失败 reqHeaders.forEach((header) => { if (header.name.toLowerCase() === "user-agent") { header.value = "Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36"; } }); } return {requestHeaders: reqHeaders}; }, {urls: ["<all_urls>"]}, ["blocking", "requestHeaders"]); // 新增blocking权限
对应的Manifest配置示例
如果使用Manifest V3:
{ "manifest_version": 3, "name": "User-Agent 修改工具", "version": "1.0", "permissions": [ "webRequest", "webRequestBlocking", "<all_urls>" ], "background": { "service_worker": "background.js" } }
如果使用Manifest V2:
{ "manifest_version": 2, "name": "User-Agent 修改工具", "version": "1.0", "permissions": [ "webRequest", "webRequestBlocking", "<all_urls>" ], "background": { "scripts": ["background.js"] } }
内容的提问来源于stack exchange,提问作者null
相关产品推荐
相关产品推荐

