chrome扩展开发之旅 第五篇

李守彬的空间 2019-06-20

目录结构

  • 5.1 下载

  • 5.2 网络请求

  • 5.3 代理

  • 5.4 系统信息
    本章讲解的是部分较为高级的API,以供哪些有更高要求的读者阅读。

5.1 下载

声明

"permissions": [
    "downloads"
  ]

方法

chrome.downloads.download({
    url:,  //下载的url
    filename:,  //保存的文件名
    conflictAction:,  //重名文件的处理方式
    saveAs:,  //是否弹出另存为窗口
    method:,  //请求方式(post或get)
    headers:,  //自定义header数组
    body:,  //post的数据
    }, callback)

conflictAction的值只能为uniquify(在文件名后面添加带括号的序号,以保证文件名唯一),overwrite(覆盖)或者prompt(给出提示,让用户自行决定是对文件进行重命名还是将其覆盖、)

5.2 网络请求

声明

"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){},{},[])

5.3 代理

声明

"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属性指定脚本内容。

5.4 系统信息

声明

"permissions": [
"system.cpu",
"system.memory",
"system.storage"
]

方法

三个接口都提供了getInfo的方法

  • chrome.system.cpu.getInfo()

  • chrome.system.memory.getInfo()

  • chrome.system.storage.getInfo()

相关推荐