Ответ 1
Попробуйте Просмотр кеша Chrome от NirSoft (бесплатно).
Сегодня форум, который я чал, был внизу, и после восстановления я обнаружил, что последние два дня публикации форума были полностью отброшены.
Излишне говорить, что я хотел бы вернуть данные, которые я могу потерять в форуме, и я надеюсь, что у меня есть хотя бы часть из них, хранящиеся в файлах кеша, созданных Chrome.
Я сталкиваюсь с двумя проблемами - файлы кеша не имеют типа файла, и я не уверен, как их читать разумным образом (попытка открыть их в Chrome сама по себе "перезагружает" их в формате .gz), и есть тонна файлов кеша.
Любые предложения по чтению и сортировке этих файлов? (Простой поиск строк должен соответствовать моим потребностям)
Попробуйте Просмотр кеша Chrome от NirSoft (бесплатно).
РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, смотрите здесь
В Chrome или Opera откройте новую вкладку и перейдите к chrome://view-http-cache/
Нажмите на любой файл, который вы хотите просмотреть. Затем вы должны увидеть страницу с кучей текста и цифр. Скопируйте весь текст на этой странице. Вставьте его в текстовое поле ниже.
Нажмите "Go". Кэшированные данные появятся в разделе "Результаты" ниже.
РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь
Chrome хранит кеш как шестнадцатеричный дамп. OSX поставляется с установленным xxd
, который является инструментом командной строки для преобразования шестнадцатеричных дампов. Мне удалось восстановить jpg из моего HTTP-кэша Chrome на OSX, выполнив следующие действия:
Ваша последняя команда должна выглядеть следующим образом:
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
Спасибо Матиасу Биненсу за то, что он направил меня в правильном направлении.
РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь
Если файл, который вы пытаетесь восстановить, имеет Content-Encoding: gzip
в разделе заголовка, и вы используете linux (или, как в моем случае, у вас установлен Cygwin), вы можете сделать следующее:
chrome://view-http-cache/
и нажмите на страницу, которую вы хотите восстановитьxxd -r a.txt| gzip -d
Обратите внимание, что в других ответах предлагается передать опцию -p
в xxd
- у меня были проблемы с этим, предположительно, потому что четвертый раздел кэша не в "postscript plain hexdump style", а в "стиле по умолчанию".
Кажется также, что нет необходимости заменять двойные пробелы одним пробелом, как это делает chrome_xxd.py
(если это необходимо, вы можете использовать sed 's/ / /g'
для этого).
Вы можете читать кэшированные файлы, используя только 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. Нет страницы подключения к Интернету, наряду с кнопкой Показать сохраненную копию:
После нажатия кнопки браузер отобразит кешированный файл.
Мне повезло с этим проектом Python с открытым исходным кодом, казалось бы, неактивным: https://github.com/JRBANCEL/Chromagnon
Я побежал:
python2 Chromagnon/chromagnonCache.py path/to/Chrome/Cache -o browsable_cache/
И у меня есть локально просматриваемый экстракт всего моего кэша открытых вкладок.
http://www.nirsoft.net/utils/chrome_cache_view.html
Я не пробовал, но выглядит так, как мне кажется.
Я сделал короткий глупый 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");
}
}
}
?>
chrome://cache
и chrome://view-http-cache
были удалены начиная с Chrome 66. Они работают в версии 65.
Вы можете проверить chrome://chrome-urls/
полный список внутренних URL-адресов Chrome.
Единственный обходной путь, который мне приходит в голову, - это использовать menu/more tools/developer tools
и выбрать вкладку Network
.
Декомпилятор свободной флэш-памяти JPEXS содержит код Java, который используется для этого в дереве исходного кода как для Chrome, так и для Firefox (хотя Firefox не поддерживает более позднюю версию cache2).
РЕДАКТИРОВАТЬ: приведенный ниже ответ больше не работает, см. здесь
Описание формата файла кэша 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));"
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))