如何提取Firefox会话Cookie(优先使用Python语言)

9
我正在尝试从其数据库(cookies.sqlite)中提取FF cookie。然而,似乎只有带有过期日期的cookie才能在那里找到(我正在搜索在会话结束时过期的cookie)。我甚至打开了FF的“记住打开的选项卡”功能。我不明白它们之间的根本区别。我可以在FF UI中看到cookie,但无法在硬盘上找到。
欢迎任何答案。
4个回答

6

会话Cookie存储在sessionstore.js文件中。

该文件本质上是一个JSON对象。如果您解析它,请查看windows[0].cookies下的数组以获取会话Cookie。

通常,每个会话Cookie中只有{name,host,path,value}等字段,但偶尔会看到一个httpOnly参数。


1
我有一个脚本,可以提取普通的cookie和会话cookie,参见export_firefox_cookies.py。截至2017年,我没有找到sessionrestore.js。我认为它被recovery.js所替代,具有相同的结构。 - Jabba

1
Farlan是正确的,会话cookie存储在sessionstore.js文件中。我创建了一个模块来从sqlite和此会话文件加载cookie,可以在这里找到:https://bitbucket.org/richardpenman/browser_cookie/ 示例用法:
import requests
import browser_cookie
cj = browser_cookie.firefox()
r = requests.get('http://stackoverflow.com', cookies=cj)

1
hoju,我看了你的模块。你可能需要将__init__.py文件的第138行更改为:cookie_files = glob.glob(os.path.expanduser('~/.mozilla/firefox/*.default*/cookies.sqlite'))。我的Linux系统上Firefox配置文件目录是这个:/home/rushil/.mozilla/firefox/2391y7t8.default-1435311139613,而你的代码找不到它。此外,我从cookies.sqlite文件中获取的Cookie并不完整。我从Firefox浏览器的Cookie管理器插件中获得了更多的Cookie。而且没有其他的.sqlite文件包含那些Cookie。有什么想法吗? - Rushil Paul
这里不是讨论错误的最佳场所,您是否介意在存储库问题页面上发布:https://bitbucket.org/richardpenman/browser_cookie/issues/new。看起来您正在使用与我测试的不同版本的FireFox,其中处理cookie的方式略有不同。 - hoju
好的,我会在那里发布。此外,我后来发现了sessionrestore.js文件,Firefox似乎在启动时删除它,该文件包含所有在会话结束时过期的会话cookie(这些cookie在cookies.sqlite中不存在)。所以我的问题解决了 :-) - Rushil Paul
啊,是的,如果你在关闭 FireFox 后进行测试,那么就可以加载会话 cookies。 - hoju
Bitbucket.org上的代码仓库已经消失(404)。 - hackerb9

1

0

会话 cookie 可能保存在内存中,一旦选项卡/浏览器关闭,就会被删除,从未进入数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接