1 修改manifast.json
manifest_version必须为3,因为这个declarativeNetRequest是3中新增的api
{
"manifest_version": 3,
"permissions": ["declarativeNetRequest"],
"host_permissions": ["<all_urls>"]
}
2 在background.js中添加监听请求的代码
const RULE_ID = 1;
chrome.declarativeNetRequest.updateDynamicRules({
// removeRuleIds用来在添加监听时避免重复监听,也就是预先删除同样id的规则
removeRuleIds: [RULE_ID],
addRules: [{
id: RULE_ID,
// 定义需要拦截的请求
condition: {
urlFilter: "https://apiv3.shanbay.com/news/user_articles?list_type=liked&ipp=10",
resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST]
},
// 拦截到目标请求后的操作定义
action: {
// chrome不允许直接修改初始请求,而是通过重发一次修改后的请求,所以你会看到action.type为REDIRECT
type: chrome.declarativeNetRequest.RuleActionType.REDIRECT,
redirect: {
transform: {
queryTransform: {
// 将url中的ipp参数的值改成了100
addOrReplaceParams: [{ key: "ipp", value: "100" }]
}
}
}
},
}]
});
3 验收效果
初始的请求1被Redirect掉了,请求2如预期的返回了结果,原先的业务流程也没有被重定向打断,非常棒
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。