通过kimi.ai获知可通过Chrome扩展程序Manifest API引用Ajax-hook库来拦截全局Ajax请求。
部署Manifest.json如下:
{
"manifest_version":2,
"name":"xxx",
"description":"xxx",
"version":"1.0",
"icons":{
"16":"image/PT_48.png",
"32":"image/PT_48.png",
"48":"image/PT_48.png",
"128":"image/PT_48.png"
},
"background":{
"scripts":["ajax-hook.min.js","background.js"] //数组中按顺序加载
// "persistent":false //??
},
"permissions":["contextMenus","webRequest","webRequestBlocking","<all_urls>","activeTab","scripting","tabs"],
"content_scripts":[{
"matches":["<all_urls>"], //匹配,该代码表示可以对所有url地址进行注入,可用通配符*和?//
"js":["jquery.js","ajax-hook.min.js","content1.js"],
"run_at":"document_start",
// "all_frames":true,
"world":"MAIN"
}],
"web_accessible_resources":["ajax-hook.min.js","jquery.js"]
}
背景脚本Backgroud.js简单编写如下:
var ah=chrome.extension.getBackgroundPage().ah;
console.log(ah); //本地同目录已存ajax-hook.min.js,同时确认控制台有正常输出
console.log(typeof ah);
ah.proxy({
onRequest:(config,handler)=>{
console.log('12345');
handler.next(config);
},
onError:(err,handler)=>{
console.log('1234');
handler.next(err);
},
onResponse:(response,handler)=>{
console.log('123');
handler.next(response);
}
});
上述代码根据kimi.ai演示所编写,manifest.json和background.js写的就上面这些内容,且本地同目录下已存ajax-hook.min.js,同时确认控制台console.log(ah)正常输出对象,但通过网页发起xhr ajax请求时,并没有输出12345,验证失败,请教大爹指导分析一下原因