Chrome扩展|通过通配符替换网站JavaScript文件



我可以替换JavaScript文件,该文件由网页提供,Chrome将使用我更改后的脚本。以下是解决方案:

manifest.json

{
"name": "extension name",
"description": "extension descriptin",
"version": "1.0",
"manifest_version": 2,
"background": {"scripts":["background.js"]},
"permissions": [
"webRequest",
"*://examplesite.com/*",
"webRequestBlocking"
]
}

background.js

chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if (details.url == "http://examplesite.com/script.8g5d8wssgf45s.combined.js")
return {
redirectUrl: "http://myexamplesite.com/my_modified_script.js"
};
}, {
urls: ["*://examplesite.com/script*.js"]
},
["blocking"]);

这很好用——浏览器将忽略脚本script.8g5d8wssgf45s.combined.js,而不是使用我从http://myexamplesite.com/my_modified_script.js修改的版本。我不知道,如何做一些通配符匹配的脚本。因为它的名称经常更改-现在是script.8g5d8wssgf45s.combined.js,但当开发人员发布新版本时,脚本名称中会有另一个散列,例如:script.azz561sscbdf.combined.js是否可以在条件下进行一些通配符匹配,如下所示?:

if (details.url == "http://examplesite.com/script.*.combined.js")

会有一些通配符标记*,它将接受脚本的所有未来版本更改并替换它?

还有一个问题——我可以在本地提供修改后的脚本吗?它将装在我的分机里。或者唯一的方法是通过我的页面提供它,比如在本例中:http://myexamplesite.com/my_modified_script.js

谢谢你的帮助!

我用regex找到了解决方案,它搜索">脚本";文件名:

chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if (details.url.match(/^.*b(script.)b.*$/))
return {
redirectUrl: "http://myexamplesite.com/my_modified_script.js"
};
}, {
urls: ["*://examplesite.com/*"]
},
["blocking"]);

灵感来源:https://github.com/bendavis78/chrome-extension-redirector/blob/master/redirector/background.js

最新更新