声明性Web请求Chrome插件:如何在扩展路径上使用正则表达式过滤器?

xxhby3vn  于 2022-12-06  发布在  Go
关注(0)|答案(1)|浏览(250)

我目前正在使用chrome插件。我想要做的是将流量从https://localhost/?uri_components = 1重定向到chrome-extension://{扩展标识}/?uri_components=1
这是我目前所知道的:

清单的一部分.json

"declarative_net_request" : {
"rule_resources" : [{
  "id": "ruleset",
  "enabled": true,
  "path": "rules.json"
}]

规则.json

[{
    "id": 1,
    "priority": 1,
    "action": { "type": "redirect", "redirect": { "extensionPath": "/popup.html", "regexSubstitution": "1" } },
    "condition": { "regexFilter": "^https://localhost/(.*)", "resourceTypes": ["main_frame"] }
}]

现在重定向可以工作。问题是,我不知道如何将url组件传递给chrome扩展url。为此,您通常会有一个regex替换,如下所示:https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/
但是我找不到用extensionpath键来做这件事的方法。有什么想法吗?

hivapdat

hivapdat1#

我遇到了同样的问题。我通过使用后台脚本中的updateDynamicRules方法解决了这个问题。如下所示:
manifest.json中,注册后台工作线程:

{
    ...,
    "background": {
        "service_worker": "background.js"
    },
    ...,
}

在您的background.js中:

chrome.runtime.onInstalled.addListener(() => {
    chrome.declarativeNetRequest.updateDynamicRules({
        removeRuleIds: [1],
        addRules: [
            {
                id: 1,
                priority: 1,
                condition: {
                    regexFilter: "^https://localhost/(.*)",
                    resourceTypes: ["main_frame"],
                },
                action: {
                    type: "redirect",
                    redirect: {
                        regexSubstitution: `chrome-extension://${chrome.runtime.id}/popup.html\\1`,
                    },
                },
            },
        ],
    });
});

我希望这对你有帮助!

相关问题