Google Chrome 将临时 pdf 文件保存在哪里?

Google Chrome 将临时 pdf 文件保存在哪里?

我想知道 Google Chrome 会将浏览器中打开的 PDF 文档保存在哪里。我知道如果我们不保存并关闭浏览器,这些文档就会被删除。

我查看了 ~/.cache/google-chrome 的 chrome 临时文件夹,但在那里找不到任何 pdf。

答案1

笔记:由于 Chrome 磁盘缓存格式已经改变


没错,它就在那个目录中。只需使用随机字符串作为文件名。测试一下:

find ~/.cache/google-chrome -type f -exec file {} + | grep PDF

例如:

$ find .cache/google-chrome/ -type f -exec file {} + | grep PDF
.cache/google-chrome/Default/Cache/f_004bf0:       PDF document, version 1.5
.cache/google-chrome/Default/Cache/f_004c01:       PDF document, version 1.4

答案2

Linux 上的Google Chrome 缓存目录$HOME/.cache/google-chrome/Default/Cache包含一个文件,每个缓存条目<16 char hex>_0名为“简单输入格式”

  • 20 字节 SimpleFileHeader
  • 密钥(即 URI)
  • 有效载荷(原始文件内容,即本例中的 PDF)
  • SimpleFileEOF 记录
  • HTTP 标头
  • 密钥的 SHA256(可选)
  • SimpleFileEOF 记录

因此,您不能简单地使用file来确定文件类型(它只会检测data),而必须搜索 PDF 标头。这将列出缓存目录中的所有 PDF:

grep -Rl '%PDF' $HOME/.cache/google-chrome/Default/Cache

笔记:%PDF如果字符串出现在非 PDF 文件中的某个地方,则可能会产生误报

笔记:如果您没有使用默认的 Chrome 配置文件,请替换Default为配置文件名称,例如Profile 1

evince将会直接读取缓存文件,而不必剥离标题。

如果您确实想提取原始 PDF,请将以下脚本保存为extractpdf.py

def main(cachefile):
    with open(cachefile, 'rb') as f:
        s = f.read()
    with open(cachefile + '.pdf', 'wb') as f:
        f.write(s[s.find(b'%PDF'):s.rfind(b'%%EOF')+5])

if __name__ == '__main__':
    import sys
    main(sys.argv[1])

并称之为python3 extractpdf.py <cache file>

相关内容