Forum: PC-Programmierung sqlite: wie wal/shm committen?


von Gustaf (Gast)


Lesenswert?

Schönen Abend

Ich stecke gerade mit cookies.sqlite von Firefox fest. Öffnen, lesen usw 
geht alles perfekt soweit, aber die Daten sind nicht aktuell. Die 
Cookies, welche der Browser gerade unter "Show cookies" auflistet, 
stehen da nicht drin. Nur diejenigen seit dem Start.

Wahrscheinlich steht alles in cookies.sqlite-wal und/oder 
cookies.sqlite-shm drin.

Bloß, wie komme ich da ran?

Die Dateien kann ich nicht als sqlite öffnen, und wenn ich bei der 
eigentlichen cookies.sqlite "PRAGMA wal_autocheckpoint" oder "VACUUM" 
absetze ändert sich auch nichts. In Firefox sehe ich auch keine 
Möglichkeit um einen COMMIT auszulösen (außer Neustart).

von Clemens L. (c_l)


Lesenswert?

Um die letzten Änderungen in die eigentliche DB zu schreiben, benutze 
"PRAGMA wal_checkpoint(TRUNCATE);".

von Gustaf (Gast)


Lesenswert?

Clemens L. schrieb:
> Um die letzten Änderungen in die eigentliche DB zu schreiben, benutze
> "PRAGMA wal_checkpoint(TRUNCATE);".

Das tut es leider auch nicht. Die andere Session wird von Firefox 
gehalten nehme ich an. Aber dort sehe ich keine Option für einen Commit.

von Schlaumaier (Gast)


Lesenswert?

Dann hast du die falsche Datenbank.

Einfach mal das Datum der cookies-DB anschauen.

Meine liegt unter den aktuellen Profil.

Und das Zeitdatum ist in Unix-Format abgespeichert.

Und die ist TOP-Aktuell.

Ich kann mir auch nicht vorstellen das die es Riskieren eine DB "offen" 
zu lassen. Das mache ich ja auch nicht.


Nebenbei : in cookies.sqlite-wal steht fast nix drin. (Total-Commander 
f3-3 drücken).

Die cookies.sqlite-shm sieht nach der History aus. (Total-Commander f3-3 
drücken.)

ps. Ich lese SQL Dateien mit einen SQL-Manager aus. Und meine 
Freeware-Version ist klasse.

von Εrnst B. (ernst)


Lesenswert?

Interessieren dich evtl. die Session-Cookies? Die landen natürlich nicht 
in der SQLite-Datenbank, sind aber in den Entwicklertools trotzdem 
sichtbar.

je nachdem was du vorhast, ist vielleicht Puppeteer eine bessere Lösung,
https://github.com/puppeteer/puppeteer
(bzw. puppeteer-firefox)
da kommst du per "page.cookies()" direkt an alle Cookies, ohne auf 
irgendwelche Datenbank-Commits hoffen zu müssen.

von Gustaf (Gast)


Lesenswert?

Ich wollte eigentlich aus reinem Basteltrieb die Cookies meines aktuell 
geöffneten Firefox regelmäßig per Skript auslesen. Da FF ja sqlite 
verwendet, schien es mir ein schönes Übungsprojekt zu sein.

Es sieht allerdings so aus, daß FF die Cookies erst beim Beenden 
speichert (wenn man das zulässt), und in about:config habe ich auch 
nichts gefunden, was einen regelmäßigen Commit erwzingen könnte.

von Εrnst B. (ernst)


Lesenswert?

Gustaf schrieb:
> und in about:config habe ich auch
> nichts gefunden

Hmm:
>> browser.sessionstore.interval
ändert nix?

Vor einigen Jahren gabs den umgekehrten Shitstorm, weil Firefox durch 
den ständigen Commit und Aktualisieren der Recovery-Infos die damals 
noch neuen SSDs kaputt geschrieben hat.

Gustaf schrieb:
> Ich wollte eigentlich aus reinem Basteltrieb die Cookies meines aktuell
> geöffneten Firefox regelmäßig per Skript auslesen.

Da würde ich mit einer WebExtension/Add-On rangehen.
Vorteil: du kriegst alle Cookies, und kannst sie in dem Moment, in dem 
sie gesetzt/geändert werden, loggen.

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions

(Extension mit "cookie"-Permission für Host "*" anlegen, dort einen 
Listener für den cookies-onChanged - Event anlegen)

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies

von Schlaumaier (Gast)


Lesenswert?

Ich bin an einer ähnlichen Sache dran. ;)

Naja, der VB-Code ist zu 80% fertig, aber das ist eins der Projekte wo 
ich Bock haben muss dafür.

Allerdings plane ich eine Cookie-Verwaltung. Was bedeutet ich habe der 
DB einige Felder hinzugefügt.

Eins davon ist "haben_will". Wenn das Feld auf JA steht, wird der/die 
Cookie nicht gelöscht.

Weil GENAU die Funktion vermisse ich in FF.  Es gibt nämlich viele 
Cookies die ich haben will/Brauche Teils wegen der EU (nervige Abfrage) 
+ Teils für Zugänge der Stufe "Mir doch egal" = Logins in Foren etc.

Soll so funktionieren. Ich lasse mir die Cookies anzeigen die NEU sind, 
also haben_will = none. Dann suche ich die wenigen Cookies raus die ich 
habe will, kommt sehr selten vor (neue wichtige Seite etc.) wir z.b. das 
Forum hier, und setzte HABEN_will auf "j".

Der Rest wird automatisch gelöscht.

Grund : Aufgrund des Schwachsinns der EU ist die Liste Gigantisch lang 
und sie versaut mir meine Vita. ;) Manchmal finde ich Werbung sogar gut.

Das Problem : Wenn ich für meine Schwester / Freundin etc. was suche, 
bekomme ich danach nur Frauenzeug angezeigt. Und es gibt nur 2 
"Feiertage" wo ich für das weibliche Geschlecht Geld ausgeben will/soll.

Als kleines Zusatzmodul plane ich noch ein Abgleich mit meinen 
Bookmarks. Wenn als Bookmarks dann "haben_will" automatisch auf "ja"

von Dirk K. (merciless)


Lesenswert?


von Schlaumaier (Gast)


Lesenswert?

Dirk K. schrieb:
> https://addons.mozilla.org/en-US/firefox/addon/cookie-quick-manager/
>
> merciless

Habe ich mir mal angesehen. Ist nicht schlecht aber meins ist mir lieber 
und individueller ;)

von Gustaf (Gast)


Lesenswert?

Εrnst B. schrieb:
> Hmm:
>>> browser.sessionstore.interval
> ändert nix?
Steht bei mit auf einer Stunde, aber die Cookiedateien werden nicht 
aktualisiert.

Εrnst B. schrieb:
> Da würde ich mit einer WebExtension/Add-On rangehen.
> Vorteil: du kriegst alle Cookies, und kannst sie in dem Moment, in dem
> sie gesetzt/geändert werden, loggen.

Kann eine Extension auf das System zugreifen? Wenn ich Cookies zB in 
eine DB schreiben will (also nichts von Firefox, sondern zB in eine 
MySQL), geht das überhaupt mittels Extension?

von Schlaumaier (Gast)


Lesenswert?

Gustaf schrieb:
> Kann eine Extension auf das System zugreifen? Wenn ich Cookies zB in
> eine DB schreiben will (also nichts von Firefox, sondern zB in eine
> MySQL), geht das überhaupt mittels Extension?

Ausprobieren.

Ich weiß aber das ich bei meinen via VB + Co. angesprochenen 
SQLlite-DB's problemlos während des Laufes des Programm auf die 
Datenbank zugreifen und  Änderungen machen kann.

Mein Tipp. Ziehe dir ein SQL-Manager z.b. SQLITESTUDIO runter. Kopiere 
die DB in Sicherheit, dann greif darauf zu und teste es damit. Weil ich 
kann mit den Manager problemlos die Datei lesen, während des Betriebs 
von FF.

von Schlaumaier (Gast)


Lesenswert?

Kleiner Tipp am Rande.

Du kannst fast jede Datei (auch welche die im Zugriff sind) kopieren. Es 
wird dann halt kopiert was da ist.

Einzige Ausnahme die Datei muss Bytes haben im Dateimanager also Mehr 
als 0 Bytes im Dateimanager anzeigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.