Форум, который я часто посещал сегодня, не работал, и после восстановления я обнаружил, что последние два дня сообщений на форуме были полностью откатированы.
Нет нужды говорить, что я хотел бы получить обратно все данные, которые я могу получить от потери форума, и я надеюсь, что у меня есть, по крайней мере, некоторые из них хранятся в кэш-файлах, которые Chrome создал.
Я сталкиваюсь с двумя проблемами - кэш-файлы не имеют файлового типа, и я не знаю, как их разумно прочитать (попытка открыть их в самом Chrome, кажется, "перезагружает" их в формате .gz), и есть тонна кэш-файлов.
Какие-нибудь предложения по чтению и сортировке этих файлов? (Простой поиск по строкам должен соответствовать моим потребностям)
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))