2

Вроде странный вопрос, но вот основная ситуация.

Некоторое время назад я написал простое небольшое приложение-задачу для использования некоторыми сотрудниками во внутренней корпоративной сети и размещал его на общем диске. Ради настойчивости без необходимости настройки веб-сервера пользовательские данные сохранялись в localStorage браузера.

Недавно SysAdmins переделал систему адресации сетевых дисков, что привело к изменению URL моего маленького приложения. Конечно, это означает, что страница больше не имеет доступа к тому же объекту localStorage, и любой, кто использовал мое приложение, теперь "потерял" свои данные, даже если они все еще хранятся где-то в Firefox. (Мы все используем Firefox 31 в Windows 7, на случай, если что-нибудь изменится.)

Итак, вопрос в том, могу ли я получить эти данные localStorage? Моя первая мысль, хотя это и было kludge, состояла в том, чтобы пользователь добавил запись в свой файл hosts чтобы указать старый URL-адрес на другой файл, который будет экспортировать данные (или, в этом отношении, указать на тривиальный файл и получить данные вручную в веб-консоли). Но, как вы уже догадались, файл hosts заблокирован, и у нас нет прав администратора.

В заключение, я знаю о различных аддонах Firefox, которые помогают с localStorage, но, как я упоминал ранее, все это происходит в изолированной корпоративной сети, поэтому ввод аддона по такой тривиальной причине не является началом.

Мысли?

1 ответ1

3

Для потомков я обнаружил, что данные localStorage хранятся в файле sqlite с именем webappsstore.sqlite в каталоге вашего профиля Firefox. В Windows это можно найти по адресу %APPDATA%\Mozilla\Firefox\Profiles\{profile ID}\webappsstore.sqlite . Чтобы прочитать его содержимое, я использовал небольшой скрипт Python, который использует пакет sqlite3 :

import os, sqlite3
profiles = os.path.join(os.environ('APPDATA'),'Mozilla\\Firefox\\Profiles')
profile = os.path.join(profiles, os.listdir(profiles)[0])
db = os.path.join(profile,'webappsstore.sqlite')
print([entry.encode('utf-8') for entry in sqlite3.connect(db).iterdump()])

(Я использовал Python 3, не уверен, есть ли различия в версии sqlite3 для Python 2.)

Это выведет много данных; Я рекомендую перенаправить в файл. Данные будут в операторах создания данных SQL. Каждая запись в локальном хранилище имеет домен и ключ, связанный с ним в таблице. URL всегда записывается в базу данных в обратном направлении. Вы ищете что-то вроде следующего:

INSERT INTO "webappsstore2" VALUES('moc.elpmaxe.www.:https:443','myLocalStorageKey','{"key":"value","pairs":["go","here"]}')

Вы найдете ваши пары ключ-значение localStorage где-нибудь в выходных данных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .