删除过去 x 天内未访问的 cookie

删除过去 x 天内未访问的 cookie

使用 Firefox。我想摆脱“过时”的 cookie。“过时”是指过去 x 天内没有任何网站访问过的 cookie。

我找遍了所有地方,但还是没找到如何做到这一点。我找到的方法包括:

  • 限制所有 cookie 的生存期(about:config -> network.cookie.lifetimePolicy)。
  • 白名单或黑名单域名(firefox 偏好设置 -> 隐私 -> cookie 例外)。
  • 删除过去 x 小时内的所有 cookie(firefox 历史记录 -> 清除最近历史记录)。

这些都不是我想要的。

我想要删除过去 x 天内未被任何网站访问过的所有 cookie。

答案1

饼干时间扩展可以配置为自动删除在指定时间内未使用的 cookie(已过期)。它还有一个单独的设置来强制过期/删除全部超过指定期限的 cookie。

Cookie 时间配置截图

答案2

我做了一些研究。

  1. Cookie 存储在cookies.sqliteFirefox 配置文件目录中的文件。
  2. 该文件是一个 sqlite 数据库。
  3. 最后一次访问的时间戳存储在lastAccessed表中的列moz_cookies
  4. 格式lastAccessed是一些PRTime格式,基本上是带有微秒的 UNIX 纪元时间。

以下查询将列出过去 14 天内未访问过的每个 cookie。

select host, name from moz_cookies
where lastaccessed < strftime('%s000000', 'now', '-14 days')
order by lastaccessed;

我刚刚学习了一些有关此方面的 SQL,因此这个查询很可能可以做得更好。

以下查询将删除所有这些 cookie。

delete from moz_cookies
where lastaccessed < strftime('%s000000', 'now', '-14 days');

这是一个可以完成此任务的简单 shell 脚本。您需要sqlite3在系统上安装该命令。

#!/bin/sh

DAYS="14"

SELECT="select host, name"
DELETE="delete"
FROM="from moz_cookies"
OBSOLETE="strftime('%s000000', 'now', '-$DAYS days')"
WHERE="where lastaccessed < $OBSOLETE"
ORDER="order by lastaccessed"

SELECTQUERY="$SELECT $FROM $WHERE $ORDER;"
DELETEQUERY="$DELETE $FROM $WHERE;"

printf '%s\n' "$SELECTQUERY" | sqlite3 cookies.sqlite

相关内容