我们有一个只有2个文件的扩展名:manifest.json和background.js
浏览器(chrome版本112)没有报告任何错误,但用户代理没有设置为my-custom-user-agent。下面是完整的扩展代码:
manifest.json
{
"name": "ua-customizer",
"version": "1",
"manifest_version": 3,
"permissions": [
"declarativeNetRequest"
],
"host_permissions": [
"<all_urls>"
],
"background": {
"service_worker": "background.js"
}
}
background.js
const rules = {
removeRuleIds: [1],
addRules: [
{
id: 1,
priority: 1,
action: {
type: 'modifyHeaders',
requestHeaders: [
{
header: 'user-agent',
operation: 'set',
value: `my-custom-user-agent`,
},
],
},
condition: {
urlFilter: '<all_urls>'
},
},
],
}
chrome.declarativeNetRequest.updateDynamicRules(rules);
少了什么?
1条答案
按热度按时间t9aqgxwy1#
变更:
urlFilter: '<all_urls>'
替换为urlFilter: '*'
,因为<all_urls>urlFilter中不支持urlFilter: '<all_urls>'
。查看chrome.declarativeNetRequest > RuleCondition > urlFilterresourceTypes: [ 'main_frame' ]
添加到RuleCondition。也许您需要添加其他资源类型,具体取决于您使用扩展的网站。但是对于https://www.whatismybrowser.com/detect/what-is-my-user-agent/来说,“main_frame”就足够了更改代码:
这两个变化都是必要的。
如果只进行其中一项更改,则扩展将不会修改用户代理字符串。
chrome.declarativeNetRequest.updateDynamicRules(rules);
只需要执行一次。参见chrome.declarativeNetRequest > updateDynamicRules:“这些规则在浏览器会话和扩展更新之间保持不变。”
我建议把它放在
chrome.runtime.onInstalled
处理程序中: