Chrome扩展开发04--Cookie和标签管理

349 阅读3分钟
原文链接: zhuanlan.zhihu.com

1、Cookie管理

Chrome为扩展提供了Cookie API,用以对Cookie进行管理。需要先在manifest文件中声明权限和相应的域:

"permissions": [
   "cookies",
   "*://*.google.com"    # 全部的Cookie则声明为<all_urls>
]

Chrome定义的Cookie包含如下属性:

》name(名称) 》value(值) 》domain(域)

》hostOnly(是否只允许完全匹配domain的请求访问)

》path(路径) 》secure(是否只允许安全连接调用)

》httpOnly(是否禁止客户端调用) 》session(是否是session Cookie)

》expirationDate(过期时间) 》storeId(包含此Cookie的Cookie Store的id)

(1)读取Cookie

Chrome提供了两种方法读取Cookie:get和getAll。

》get方法可以指定name, url和storeId,其中storeId可以不指定。

》getAll方法可以获取所有符合条件的Cookie,支持的匹配条件包括url、name、domain、path等。如果不指定匹配条件,则返回所有的Cookie。

》以上2个方法都支持回调函数,回调函数参数为Cookie或者Cookies。

(2)设置Cookie

Chrome提供set方法用于设置Cookie,支持的属性包括上边Cookie属性的所有字段。

(3)删除Cookie

remove方法可以删除指定url、name和storeId的Cookie。

(4)获取全部的Cookie Store

getAllCookieStores方法可以用来获取全部的Cookie Store,它包含一个id属性和一个tabIds属性,id为这个Cookie Store的ID,tabIds则是一个包含共享该Cookie Store的所有tab的ID数组。有关tab的内容,在以后会讲解到。

(5)监控操作Cookie的行为

onChanged事件用来监控Cookie的设置和删除行为。

这里的changeInfo包含3个属性:

》removed:表明是否为删除行为。

》cookie:即被设置或删除的Cookie对象。

》cause:Cookie变化的原因,包括evicted、expired、explicit、overwrite等。


2、标签管理

Chrome提供相应的API用来管理和操作标签对象。标签对象的数据结构为:

同样我们需要在manifest文件中声明相应的权限:

"permissions": ["tabs"]

(1)获取标签信息:Chrome提供了3种方法,分别为get、getCurrent和query方法。

query方法用于按条件查询,查询条件包括标签对象中的大部分属性。

(2)创建标签:create方法以及duplicate复制方法。

(3)更新标签:update方法

(4)移动标签:move方法

(5)重载标签:reload方法

(6)移除标签:remove方法

(7)获取当前标签页面的显示语言:detectLanguage方法

(8)标签可见部分截图:captureVisibleTab方法

(9)注入JavaScript和CSS:executeScript和insertCSS方法

这里可以注入文件,也可以注入代码:

注:之前我们接触过content_scripts,它可以向条件匹配的页面注入JS和CSS文件,但却无法向指定的标签页面注入JS和CSS文件,而这里的execute和insert方法可以。

(10)与指定标签页中的内容脚本(content script)进行通讯:sendMessage方法

(11)监视标签行为,即监视tab的onXXX事件。比如onCreated、onMoved等等

=============================================================

作者主页:笑虎(Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等)

作者专栏主页:撸代码,学知识 - 知乎专栏

作者GitHub主页:撸代码,学知识 - GitHub

欢迎大家拍砖、提意见。相互交流,共同进步!

==============================================================