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
欢迎大家拍砖、提意见。相互交流,共同进步!
==============================================================