Salut, je travaille sur l'utilisation de cookies Firefox en python. J'ai évoqué ceci. J'obtiens l'erreur "DatabaseError: le fichier est chiffré ou n'est pas une base de données". J'ai également parcouru d'autres réponses et elles semblent suggérer un problème de compatibilité, mais aucune d'entre elles ne détaille comment résoudre le problème.

Système d'exploitation: windows 7, version Firefox: 38, Python: 2.7.9.

Veuillez m'aider à résoudre ce problème. Ci-dessous le code. BTW J'ai une copie de «cookies.sqlite» dans mon répertoire de travail, alors ne vous embêtez pas à répondre que mon chemin est incorrect.

Merci.

import urllib2
import cookielib
from sqlite3 import dbapi2

host = 'www.reddit.com'
ff_cookie_file= 'cookies.sqlite'

file = open("cookie.txt", "w")
file.write("#LWP-Cookies-2.0\n")
match = '%%%s%%' % host
con = dbapi2.connect(ff_cookie_file)
cur = con.cursor()
cur.execute("select name, value, path, host from moz_cookies where host like ?", [match])
for item in cur.fetchall():
    cookie = "Set-Cookie3: %s=\"%s\"; path=\"%s\";  \
    domain=\"%s\"; expires=\"2038-01-01 00:00:00Z\"; version=0\n" % (item[0], item[1], item[2], item[3])
file.write(cookie)
file.close()

cj = cookielib.LWPCookieJar()
cj.load("cookie.txt")

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

Edit: l'exécution de la commande "sqlite3 cookies.sqlite" donne le résultat suivant:

python: can't open file 'sqlite3': [Errno 2] No such file or directory

Je suppose que la raison à cela est que mon système n'a pas de fichier en tant que "sqlite3.exe".

Pour plus de confirmation sur le fonctionnement ou non de mon sqlite3, j'ai créé la base de données, inséré quelques valeurs et l'ai interrogée. Cela a fonctionné comme du charme. voici le lien. Donc je suppose qu'il y a un problème avec le fichier "cookies.sqlite". Tout autre moyen de le faire fonctionner. Les gars, s'il vous plaît, j'ai vraiment besoin de résoudre ce problème.

1
paramvir 17 juil. 2015 à 16:21

2 réponses

Meilleure réponse

J'ai donc finalement trouvé la solution au problème de création de "cookies.txt".

Remarque : je n'ai pas corrompu ni "cookies.sqlite" ni mon sqlite3 n'a rencontré de problèmes. Je l'ai confirmé en important dans l'interpréteur de python.

J'ai donc lancé "cookies.sqlite" et "sqlite3", mais une fois combiné produit "DatabaseError: le fichier est chiffré ou n'est pas une base de données". Suis les étapes

  • téléchargez le binaire windows sqlite3 depuis ici et extrayez le binaire.
  • ouvrez cmd et exécutez dans le répertoire extrait "sqlite3 cookies.sqlite". vous aurez un terminal sqlite devant vous. écrivez les commandes suivantes dans le shell.

    .output cookies.txt # cela dirigera vos commandes suivantes vers le fichier nommé cookies.txt

    sélectionnez * parmi moz_cookies; # cela sélectionnera toutes les entrées de moz_cookies.

Là, vous avez votre fichier cookies.txt. lien référencé

0
Community 23 mai 2017 à 12:07

Votre code fonctionne plus ou moins pour moi:

$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sqlite3 import dbapi2
>>> con = dbapi2.connect('cookies.sqlite')
>>> cur = con.cursor()
>>> cur.execute("SELECT name, value, path, host FROM moz_cookies WHERE host LIKE ?", ["%%www.reddit.com%%"])
<sqlite3.Cursor object at 0x10bbb3030>
>>> for item in cur.fetchall():
...     print item[0]
...
loid
loidcreated
loid
loidcreated

Peut-être que le fichier est corrompu? Pouvez-vous essayer de l'ouvrir directement avec sqlite3?

$ sqlite3 cookies.sqlite
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> SELECT name FROM moz_cookies WHERE host LIKE "%%www.reddit.com%%";
loid
loid
loidcreated
loidcreated
0
Callahad 17 juil. 2015 à 15:24