Подтвердить что ты не робот

Как читать файлы Chrome Cache?

Сегодня форум, который я чал, был внизу, и после восстановления я обнаружил, что последние два дня публикации форума были полностью отброшены.

Излишне говорить, что я хотел бы вернуть данные, которые я могу потерять в форуме, и я надеюсь, что у меня есть хотя бы часть из них, хранящиеся в файлах кеша, созданных Chrome.

Я сталкиваюсь с двумя проблемами - файлы кеша не имеют типа файла, и я не уверен, как их читать разумным образом (попытка открыть их в Chrome сама по себе "перезагружает" их в формате .gz), и есть тонна файлов кеша.

Любые предложения по чтению и сортировке этих файлов? (Простой поиск строк должен соответствовать моим потребностям)

4b9b3361

Ответ 2

РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, смотрите здесь


В Chrome или Opera откройте новую вкладку и перейдите к chrome://view-http-cache/

Нажмите на любой файл, который вы хотите просмотреть. Затем вы должны увидеть страницу с кучей текста и цифр. Скопируйте весь текст на этой странице. Вставьте его в текстовое поле ниже.

Нажмите "Go". Кэшированные данные появятся в разделе "Результаты" ниже.

Ответ 3

РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь


Chrome хранит кеш как шестнадцатеричный дамп. OSX поставляется с установленным xxd, который является инструментом командной строки для преобразования шестнадцатеричных дампов. Мне удалось восстановить jpg из моего HTTP-кэша Chrome на OSX, выполнив следующие действия:

  1. Перейти: chrome://кеш
  2. Найдите файл, который вы хотите восстановить, и нажмите на него.
  3. Скопируйте 4-й раздел в буфер обмена. Это содержимое файла.
  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

Спасибо Матиасу Биненсу за то, что он направил меня в правильном направлении.

Ответ 4

РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь


Если файл, который вы пытаетесь восстановить, имеет Content-Encoding: gzip в разделе заголовка, и вы используете linux (или, как в моем случае, у вас установлен Cygwin), вы можете сделать следующее:

  1. посетите chrome://view-http-cache/ и нажмите на страницу, которую вы хотите восстановить
  2. скопировать последний (четвертый) раздел стенографического текста страницы (скажем: a.txt)
  3. xxd -r a.txt| gzip -d

Обратите внимание, что в других ответах предлагается передать опцию -p в xxd - у меня были проблемы с этим, предположительно, потому что четвертый раздел кэша не в "postscript plain hexdump style", а в "стиле по умолчанию".

Кажется также, что нет необходимости заменять двойные пробелы одним пробелом, как это делает chrome_xxd.py (если это необходимо, вы можете использовать sed 's/ / /g' для этого).

Ответ 5

Вы можете читать кэшированные файлы, используя только Chrome.

В Chrome есть функция Показать кнопку сохраненного копирования:

Show Saved Copy Button Mac, Windows, Linux, Chrome OS, Android

Если страница не загружается, если в кэше браузера существует устаревшая копия страницы, будет представлена кнопка, позволяющая пользователю загрузить эту устаревшую копию. Основной вариант включения ставит кнопку в наиболее заметное положение на странице ошибок; вторичный выбор разрешения ставит его вторично по отношению к кнопке перезагрузки. # Шоу сохраняемого копирования

Сначала отключитесь от Интернета, чтобы убедиться, что браузер не перезаписывает запись в кеше. Затем перейдите к chrome://flags/#show-saved-copy и установите значение флага на Enable: Primary. После перезагрузки браузера Show Saved Copy Button будет включена. Теперь вставьте URI кэшированного файла в адресную строку браузера и нажмите Enter. Появится Chrome. Нет страницы подключения к Интернету, наряду с кнопкой Показать сохраненную копию: enter image description here

После нажатия кнопки браузер отобразит кешированный файл.

Ответ 6

Мне повезло с этим проектом Python с открытым исходным кодом, казалось бы, неактивным: https://github.com/JRBANCEL/Chromagnon

Я побежал:

python2 Chromagnon/chromagnonCache.py path/to/Chrome/Cache -o browsable_cache/

И у меня есть локально просматриваемый экстракт всего моего кэша открытых вкладок.

Ответ 8

Я сделал короткий глупый script, который извлекает файлы 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");
        }
    }
 }
?>

Ответ 9

Он был удален специально, и он больше не вернется.

chrome://cache и chrome://view-http-cache были удалены начиная с Chrome 66. Они работают в версии 65.

Обход

Вы можете проверить chrome://chrome-urls/ полный список внутренних URL-адресов Chrome.

Единственный обходной путь, который мне приходит в голову, - это использовать menu/more tools/developer tools и выбрать вкладку Network.

Причина, по которой он был удален, заключается в следующем:

Обсуждение:

Ответ 11

РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь


Описание формата файла кэша Google Chrome.

Список файлов кэша, см. URL-адреса (скопируйте и вставьте в адресную строку браузера):

  • chrome://cache/
  • chrome://view-http-cache/

Папка кеша в Linux: $~/.cache/google-chrome/Default/Cache

Давайте определим в файле кодировку GZIP:

$ head f84358af102b1064_0 | hexdump -C | grep --before-context=100 --after-context=5 "1f 8b 08"

Извлечь файл кэша Chrome одной строкой в PHP (без заголовка, блока CRC32 и блока ISIZE):

$ php -r "echo gzinflate(substr(strchr(file_get_contents('f84358af102b1064_0'), \"\x1f\x8b\x08\"), 10,
-8));"

Ответ 12

Joachim Metz предоставляет некоторую документацию по формату файла кэша Chrome со ссылками на дополнительную информацию.

Для моего случая использования мне нужен был только список кэшированных URL-адресов и соответствующие им временные метки. Я написал скрипт на Python, чтобы получить их, анализируя файлы data_ * в C:\Users\me\AppData\Local\Google\Chrome\User Data\Default\Cache\:

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))