李守彬的空间 2019-06-20
5.1 下载
5.2 网络请求
5.3 代理
5.4 系统信息
本章讲解的是部分较为高级的API,以供哪些有更高要求的读者阅读。
"permissions": [ "downloads" ]
chrome.downloads.download({ url:, //下载的url filename:, //保存的文件名 conflictAction:, //重名文件的处理方式 saveAs:, //是否弹出另存为窗口 method:, //请求方式(post或get) headers:, //自定义header数组 body:, //post的数据 }, callback)
conflictAction的值只能为uniquify(在文件名后面添加带括号的序号,以保证文件名唯一),overwrite(覆盖)或者prompt(给出提示,让用户自行决定是对文件进行重命名还是将其覆盖、)
"permissions": [ "webRequest", "webRequestBlocking", "*://*.google.com/" ]
注意:webRequest接口无法在Event Page中使用。
对于目前的网络请求,笔记实用的功能包括阻断链接,更改header和重定向。
chrome.webRequest.onBeforeRequest.addListener(function(details){ return {cancel: true}}, {urls: ["*://bad.exemple.com/*"]}, ["blocking"]) //阻断所有想bad.exemple.com的连接 chrome.webRequest.onbeforeSendHeaders.addListener( function(details){},{},[])
"permissions": [ "proxy" ]
chrome.proxy.settings.set({},callback)
chrome.proxy.settings.get({},callback)
var config = { mode: "fixed_servers", rules: { proxyForHttp: { scheme: "socks5", host: "1.2.3.4", port: 1080 }, //所有的http协议的浏览都使用1.2.3.4:1080这个socks5代理 proxyForHttps: { scheme: "socks5", host: "1.2.3.4", port: 1080 }, //所有的https协议的浏览都使用1.2.3.4:1080这个socks5代理 proxyForFtp: { scheme: "http", host: "1.2.3.4", port: 80 //所有的http协议的浏览都使用1.2.3.4:80这个http代理 } bypassList: ["foobar.com"] //不使用任何代理 } }; chrome.proxy.settings.set( {value: config}, function(){} );
另外,chrome还提供singleProxy属性(任何协议都要使用此代理)和fallbackProxy属性(未匹配到的协议使用此代理)。pacScript指定了代理访问所使用的pac脚本,因此可以通过url属性指定脚本位置,也可以直接通过data属性指定脚本内容。
"permissions": [ "system.cpu", "system.memory", "system.storage" ]
三个接口都提供了getInfo的方法
chrome.system.cpu.getInfo()
chrome.system.memory.getInfo()
chrome.system.storage.getInfo()