
Eine etwas seltsame Frage, aber hier ist die grundlegende Situation.
Vor einiger Zeit habe ich eine einfache kleine To-Do-App für einige Kollegen in einem internen Firmennetzwerk geschrieben und sie auf einem freigegebenen Laufwerk gehostet. Um die Persistenz zu gewährleisten, ohne einen Webserver einrichten zu müssen, wurden die Benutzerdaten im lokalen Speicher des Browsers gespeichert.
Vor kurzem haben die SysAdmins das Adressierungssystem für Netzwerklaufwerke überarbeitet, was zu einer Änderung der URL für meine kleine App geführt hat. Das bedeutet natürlich, dass die Seite keinen Zugriff mehr auf dasselbe localStorage-Objekt hat und jeder, der meine App verwendet hat, nun seine Daten „verloren“ hat, obwohl sie noch irgendwo bei Firefox gespeichert sind. (Wir verwenden alleFirefox 31AnWindows 7, falls dadurch etwas geändert wird.)
Die Frage ist also, ob ich diese LocalStorage-Daten abrufen kann. Mein erster Gedanke, so behelfsmäßig das auch sein mag, war, einen Benutzer einen Eintrag zu seiner hosts
Datei hinzufügen zu lassen, um die alte URL auf eine andere Datei zu verweisen, die die Daten exportiert (oder, was das betrifft, auf eine triviale Datei zu verweisen und die Daten manuell in der Webkonsole abzurufen). Aber wie Sie vielleicht schon vermutet haben, hosts
ist die Datei gesperrt und wir haben keine Administratorrechte.
Abschließend möchte ich noch anmerken, dass mir die verschiedenen Firefox-Add-ons bekannt sind, die bei localStorage helfen, aber wie ich bereits erwähnt habe, geschieht dies alles in einem isolierten Unternehmensnetzwerk, sodass die Einführung eines Add-ons aus solch einem trivialen Grund keine Option ist.
Gedanken?
Antwort1
webappsstore.sqlite
Für die Nachwelt habe ich herausgefunden, dass localStorage-Daten in einer SQLite-Datei namens in Ihrem Firefox-Profilverzeichnis gespeichert sind . Unter Windows ist diese unter zu finden %APPDATA%\Mozilla\Firefox\Profiles\{profile ID}\webappsstore.sqlite
. Um den Inhalt zu lesen, habe ich ein kleines Python-Skript verwendet, das das Paket verwendet 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()])
(Ich habe Python 3 verwendet und bin nicht sicher, ob es Unterschiede zur Python 2-Version von SQLite3 gibt.)
Dies gibt eine Menge Daten aus; ich empfehle die Umleitung in eine Datei. Die Daten befinden sich in SQL-Datenerstellungsanweisungen. Jedem Eintrag im lokalen Speicher sind in einer Tabelle eine Domäne und ein Schlüssel zugeordnet. Die URL wird in der Datenbank immer rückwärts geschrieben. Sie suchen nach etwas wie dem Folgenden:
INSERT INTO "webappsstore2" VALUES('moc.elpmaxe.www.:https:443','myLocalStorageKey','{"key":"value","pairs":["go","here"]}')
Sie finden Ihre localStorage-Schlüssel-Wert-Paare irgendwo in der Ausgabe.