如何读取Chrome缓存文件?

| 我经常去的一个论坛今天关闭了,恢复后,我发现论坛发布的最后两天已完全回滚。 不用说,我想从论坛丢失中找回我可以提供的数据,我希望至少将其中一些存储在Chrome创建的缓存文件中。 我遇到两个问题-缓存文件没有文件类型,而且我不确定如何以智能的方式读取它们(尝试在Chrome本身中打开它们似乎以.gz格式“重新下载”),并且有大量的缓存文件。 关于如何读取和排序这些文件的任何建议? (简单的字符串搜索应符合我的需求)     
已邀请:
尝试从NirSoft免费下载Chrome缓存视图。     
编辑:下面的答案不再有效,请参见此处 在Chrome或Opera中,打开一个新标签,然后导航到
chrome://view-http-cache/
单击您要查看的任何文件。 然后,您应该会看到一个包含大量文本和数字的页面。 复制该页面上的所有文本。 将其粘贴在下面的文本框中。 按“转到”。 缓存的数据将显示在下面的“结果”部分中。     
编辑:下面的答案不再有效,请参见此处 Chrome将缓存存储为十六进制转储。 OSX附带安装了“ 1”,这是用于转换十六进制转储的命令行工具。通过以下步骤,我设法从OSX上的Chrome的HTTP缓存中恢复了jpg: 转到:chrome:// cache 找到您要恢复的文件,然后单击其链接。 将第4部分复制到剪贴板。这是文件的内容。 请按照此要点上的步骤将剪贴板中的剪贴板传送到python脚本中,该脚本随后又传送到xxd以从十六进制转储文件中重建文件: https://gist.github.com/andychase/6513075 您的最终命令应如下所示:
pbpaste | python chrome_xxd.py | xxd -r - image.jpg
如果您不确定内容的十六进制转储是Chrome的缓存输出的哪一部分,请查看此页面以获取良好的指导: http://www.sparxeng.com/blog/wp-content/uploads/2013/03/chrome_cache_html_report.png 图片来源:http://www.sparxeng.com/blog/software/recovering-images-from-google-chrome-browser-cache 有关XXD的更多信息:http://linuxcommand.org/man_pages/xxd1.html 感谢上述Mathias Bynens向我发送了正确的信息。     
编辑:下面的答案不再有效,请参见此处 如果您尝试恢复的文件的标题部分包含“ 3”,并且您使用的是Linux(或者在我的情况下,您已经安装了Cygwin),则可以执行以下操作: 访问
chrome://view-http-cache/
,然后单击要恢复的页面 将页面的最后(第四)部分逐字复制到文本文件中(例如:a.txt)
xxd -r a.txt| gzip -d
请注意,其他答案建议将
-p
选项传递给
xxd
-我对此有麻烦,大概是因为高速缓存的第四部分不是“ postscript纯十六进制转储样式”,而是“默认样式”。 似乎也不必像
chrome_xxd.py
那样用一个空格替换双空格(如果有必要,您可以使用
sed \'s/  / /g\'
)。     
您可以单独使用Chrome浏览缓存的文件。 Chrome具有一项名为“显示保存的副本按钮”的功能:   显示保存的复制按钮Mac,Windows,Linux,Chrome OS,Android      当页面加载失败时,如果浏览器缓存中存在该页面的陈旧副本,将显示一个按钮以允许用户加载该陈旧副本。主要的启用选择将按钮置于错误页面上的最显眼位置。次要启用选项将其置于重新加载按钮的次要位置。 #show-saved-copy 首先断开与Internet的连接,以确保浏览器不会覆盖缓存条目。然后导航至
chrome://flags/#show-saved-copy
并将标志值设置为
Enable: Primary
。重新启动浏览器后,将启用“显示保存的副本”按钮。现在,将缓存的文件URI插入浏览器的地址栏中,然后按Enter。 Chrome浏览器将显示“没有互联网连接”页面以及“显示保存的副本”按钮: 按下按钮后,浏览器将显示缓存的文件。     
我对这个似乎不活跃的开源Python项目感到很幸运: https://github.com/JRBANCEL/Chromagnon 我跑了:
python2 Chromagnon/chromagnonCache.py path/to/Chrome/Cache -o browsable_cache/
我得到了所有打开的选项卡缓存的本地浏览摘要。     
我制作了简短的愚蠢脚本,可提取JPG和PNG文件:
#!/usr/bin/php
<?php
 $dir=\"/home/user/.cache/chromium/Default/Cache/\";//Chrome or chromium cache folder. 
 $ppl=\"/home/user/Desktop/temporary/\"; // Place for extracted files 

 $list=scandir($dir);
 foreach ($list as $filename)
 {

 if (is_file($dir.$filename))
    {
        $cont=file_get_contents($dir.$filename);
        if  (strstr($cont,\'JFIF\'))
        {
            echo ($filename.\"  JPEG \\n\");
            $start=(strpos($cont,\"JFIF\",0)-6);
            $end=strpos($cont,\"HTTP/1.1 200 OK\",0);
            $cont=substr($cont,$start,$end-6);
            $wholename=$ppl.$filename.\".jpg\";
            file_put_contents($wholename,$cont);
            echo(\"Saving :\".$wholename.\" \\n\" );


                }
        elseif  (strstr($cont,\"\\211PNG\"))
        {
            echo ($filename.\"  PNG \\n\");
            $start=(strpos($cont,\"PNG\",0)-1);
            $end=strpos($cont,\"HTTP/1.1 200 OK\",0);
            $cont=substr($cont,$start,$end-1);
            $wholename=$ppl.$filename.\".png\";
            file_put_contents($wholename,$cont);
            echo(\"Saving :\".$wholename.\" \\n\" );


                }
        else
        {
            echo ($filename.\"  UNKNOWN \\n\");
        }
    }
 }
?>
    
它是有意删除的,不会再出现。 14ѭ和
chrome://view-http-cache
已从chrome 66开始删除。它们适用于65版。 解决方法 您可以查看ѭ16来获取内部Chrome网址的完整列表。 我唯一想到的解决方法是使用
menu/more tools/developer tools
并选择
Network
标签。 删除它的原因是此错误: https://chromium.googlesource.com/chromium/src.git/+/6ebc11f6f6d112e4cca5251d4c0203e18cd79adc https://bugs.chromium.org/p/chromium/issues/detail?id=811956 讨论: https://groups.google.com/a/chromium.org/forum/#!msg/net-dev/YNct7Nk6bd8/ODeGPq6KAAAJ     
JPEXS Free Flash Decompiler具有Java代码,可在Chrome和Firefox的源代码树中执行此操作(尽管不支持Firefox的最新cache2)。     
编辑:下面的答案不再有效,请参见此处 Google Chrome浏览器缓存文件格式说明。 缓存文件列表,请参阅URL(复制并粘贴到浏览器地址栏中):
chrome://cache/
chrome://view-http-cache/
Linux中的缓存文件夹:folder21: 让我们确定文件中的GZIP编码:
$ head f84358af102b1064_0 | hexdump -C | grep --before-context=100 --after-context=5 \"1f 8b 08\"
在PHP上一行提取Chrome缓存文件(不包含标头,CRC32和ISIZE块):
$ php -r \"echo gzinflate(substr(strchr(file_get_contents(\'f84358af102b1064_0\'), \\\"\\x1f\\x8b\\x08\\\"), 10,
-8));\"
    
Joachim Metz提供了一些有关Chrome缓存文件格式的文档,并提供了更多信息的参考。 对于我的用例,我只需要一个缓存的URL及其相应时间戳的列表。我编写了一个Python脚本,通过解析
C:\\Users\\me\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache\\
下的data_ *文件来获取这些信息:
import datetime
with open(\'data_1\', \'rb\') as datafile:
    data = datafile.read()

for ptr in range(len(data)):
    fourBytes = data[ptr : ptr + 4]
    if fourBytes == b\'http\':

        # Found the string \'http\'. Hopefully this is a Cache Entry
        endUrl = data.index(b\'\\x00\', ptr)
        urlBytes = data[ptr : endUrl]
        try:
            url = urlBytes.decode(\'utf-8\')
        except:
            continue

        # Extract the corresponding timestamp
        try:
            timeBytes = data[ptr - 72 : ptr - 64]
            timeInt = int.from_bytes(timeBytes, byteorder=\'little\')
            secondsSince1601 = timeInt / 1000000
            jan1601 = datetime.datetime(1601, 1, 1, 0, 0, 0)
            timeStamp = jan1601 + datetime.timedelta(seconds=secondsSince1601)
        except:
            continue

        print(\'{} {}\'.format(str(timeStamp)[:19], url))
    

要回复问题请先登录注册