怎么在终端里拿到浏览器的cookie呢?

每次查询cookie,总是要先打开浏览器,然后在设置选项中找,很麻烦

我们能不能写一个工具,直接在Terminal中获得相应网站的cookie呢?


下面,我们以mac系统中chrome浏览器为例,进行探索。。。

找到chrome浏览器的cookie文件所在位置~/Library/Application Support/Google/Chrome/Profile 1/Cookies

这个位置可能不一致,有些机器在~/Library/Application Support/Google/Chrome/Default/Cookies目录下

cookie文件是sqlite3数据库的文件格式,我们使用sqlite3加载

cd ~/Library/Application\ Support/Google/Chrome/Profile\ 1/ && sqlite3 Cookies

查看数据库中有哪些表

> .tables

查看cookies表结构

> .schema cookies

得到表结构

CREATE TABLE cookies(
    creation_utc INTEGER NOT NULL,
    host_key TEXT NOT NULL,
    name TEXT NOT NULL,
    value TEXT NOT NULL,
    path TEXT NOT NULL,
    expires_utc INTEGER NOT NULL,
    is_secure INTEGER NOT NULL,
    is_httponly INTEGER NOT NULL,
    last_access_utc INTEGER NOT NULL,
    has_expires INTEGER NOT NULL DEFAULT 1,
    is_persistent INTEGER NOT NULL DEFAULT 1,
    priority INTEGER NOT NULL DEFAULT 1,
    encrypted_value BLOB DEFAULT '',
    samesite INTEGER NOT NULL DEFAULT -1,
    UNIQUE (host_key, name, path));

哈哈,我们直接用sql语句查询相应字段,不就大功告成了,so easy!

等等…encrypted_value是什么鬼!!!

原来,chrome浏览器对cookie的value字段做了加密

解密算法参考:http://n8henrie.com/2014/05/decrypt-chrome-cookies-with-python/

算法是用macox的mock密码作为私钥,对value进行了AES加密;我们拿到DerivedKey进行解密即可得到原值

如果不想研究具体怎么解密的,直接看我的项目吧,基于golang实现

项目地址:https://github.com/muyids/chrome-cookie

原文地址:http://www.muyids.com/posts/sqlite3-chrome-cookie/