{//manifest.json
"name": "name",
"version": "1.0.1",
"manifest_version": 2,
"description": "description",
"browser_action": {
"default_icon": "icon.ico",
"default_title": "name",
"default_popup": "index.html"
},
"permissions": [ "tabs", "cookies", "storage", "sessions", "webRequest", "webRequestBlocking", "history", "http://*/", "https://*/" ],
"content_security_policy": "script-src 'self' 'unsafe-inline' 'unsafe-eval' http://ip:*/; object-src 'self'",
"background": { "scripts": [ "background.js" ] },
"content_scripts": [
{
"matches": [ "*://*/*" ],
"js": [ "content.js" ],
"run_at": "document_end",
"all_frames": true
}
]
}
通信
chrome.extension.onMessage.addListener((req, sender, res) => res(req + 1));//background scripts
chrome.extension.sendMessage(123, alert);//content_scripts
chrome.extension.onMessage.addListener((req, sender, res) => alert(req));//content_scripts
chrome.tabs.query({ /*active: true, currentWindow: true*/ }, function (tabs) {//default_popup
for (let v of tabs) chrome.tabs.sendMessage(v.id, 'default_popup');
});
chrome.cookies.set({ url: url, name: "a", value: "123" }, console.log);//设置cookie
chrome.cookies.getAll({}, console.log);//查cookie
chrome.webRequest.onBeforeSendHeaders.addListener(p => {//改写requestHeader
let ua = p.requestHeaders.filter(p => p.name == 'User-Agent')[0];
if (ua) ua.value = '...';
p.requestHeaders.push({ name: "AAA", value: "..." });
return { requestHeaders: p.requestHeaders };
}, { urls: ["http://domain/*"], types: ["xmlhttprequest"] }, ["blocking", "requestHeaders"]);
chrome.webRequest.onHeadersReceived.addListener(p => {//改写responseHeader
let a = p.responseHeaders.filter(p => p.name == 'px')[0];
if (a) a.value = '...';
else p.responseHeaders.push({ name: 'px', value: "..." });
return { responseHeaders: p.responseHeaders };
}, { urls: ["http://domain/*"], types: ["xmlhttprequest"] }, ["responseHeaders", 'blocking']);