[Python-de] Firefox Cookie auslesen (sqlite3)
Robin Koch
robin.koch at t-online.de
Di Jun 24 17:37:02 CEST 2014
Am 24.06.2014 06:09, schrieb Stefan Schwarzer:
>> ich bin neu in der Gruppe
>
> herzlich willkommen! :-)
Danke. :-)
>> ---
>> import sqlite3
>>
>> dblocation = r'd:\temp\sqlite\cookies.sqlite'
>> query = r"""SELECT value FROM moz_cookies
>> WHERE baseDomain LIKE 'website.com' AND name = 'userid'"""
>>
>> db = sqlite3.connect(dblocation)
>> cur = db.cursor()
>>
>> cur.execute(query)
>> ---
>>
>> Der execute-Aufruf führt leider zu folgendem Fehler:
>>
>> ---
>> DatabaseError: file is encrypted or is not a database
>> ---
> Um das Problem einzugrenzen, könntest du eine Datenbank aus
> dem Kommandozeilen-Client frisch anlegen und testen, ob du
> `SELECT`s auf dieser Datenbank laufen lassen kannst.
Gute Idee. Das funktioniert in der Tat problemlos.
> Ich kann meine `cookies.sqlite` (unter Fedora Linux)
> problemlos öffnen und mit `SELECT` Werte auslesen.
Unter Python oder mit dem CLI-Client?
Ich arbeite übrigens unter Windows 7, falls ich das noch nicht erwähnt
hatte.
> Dafür habe ich die Datei in ein gesondertes Verzeichnis kopiert.
Ja, ich habe die cookie.sqlite für die Tests bei geschlossenem Firefox
in ein temporäres Verzeichnis kopiert.
>> Die SQLite-Versionsnummer lauten:
>> sqlite.version_info = 2.6.0
>
> Ich nehme an, dass sollte `sqlite3.version_info` sein? Oder
> wo kommt der Wert sonst her?
Korrekt.
>> sqlite3.sqlite_version_info = 3.6.21
>
> Zum Vergleich: Bei mir sind die Werte
>
> sqlite3.version_info -> (2, 6, 0)
> sqlite3.sqlite_version_info -> (3, 8, 3)
Aha. Das ist interessant.
Ich habe Python 2.7.6 vor einem Monat installiert.
Und 3.6.21 ist noch von 2009![1]
Ah, ich merke gerade, dass eine Woche später v2.7.7 veröffentlicht wurde
in dem scheinbar etwas in die Richtung getan wurde:
| Issue #20026: Fix the sqlite module to handle correctly invalid
| isolation level (wrong type).
Mal sehen, ob das was hilft.
> Das spricht ja auch stark dafür, dass es nicht mit der
> Datenbank-Datei zu tun hat. Noch "sicherheitshalber" die
> Frage: Handelt es sich bei den Zugriffen aus Python und über
> die Kommandozeile um ein und dieselbe Datenbank-Datei
> (gleiche Position im Dateisystem) oder könnte die von Python
> aus genutzte Datei bei einem Kopiervorgang beschädigt worden
> sein?
Nein, es ist die selbe Datei.
Nebenbei: Ich habe gestern abend noch versucht das sqltie3-Module zu
aktualisieren, gemäß [2], aber das endete mit einem
| error: Unable to find vcvarsall.bat
:-(
Ich hoffe das 2.7.7 was hilft.
Danke auf jeden Fall schonmal für Deine Mühe!
[1] http://sqlite.org/changes.html#version_3_6_21
[2]
http://blog.rodolfocarvalho.net/2012/07/upgrade-sqlite-version-python-webfaction.html
--
Robin Koch
Mehr Informationen über die Mailingliste python-de