Ecrire un programme qui lit l'historique de Chrome

feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Imaginons un navigateur chrome dans lequel est ouverte une URL.

Dans un programme C++ entièrement à part, je voudrais savoir quelle est cette URL. J'imagine que c'est peut-être stocké dans le fichier d'historique des pages visitées. Mais je ne sais pas où le trouver.

Merci 
Henri
Windows / Chrome 110.0.0.0

A voir également:

2 réponses

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 

Bonjour,

Pourquoi ne pas simplement directement ouvrir chrome puis l'historique (ctrl+H) ?

Voir aussi cette discussion : chrome stocke l'historique dans une base sqlite (fichier ~/.config/chromium/Default/History sous Linux, où ~ désigne le dossier personnel de l'utilisateur). Pas besoin de C++, un simple client sqlite suffit.

Cependant, sqlite ne peut consulter cette base que si elle n'est pas déjà en cours d'utilisation (e.g. par chrome).

Exemple sous Linux :

  • Installation de sqlite
sudo apt update
sudo apt install sqlite3
  • Utilisation
sqlite3 ~/.config/chromium/Default/History
  • Requête 
SELECT urls.url, urls.title FROM urls;
  • Résultat (si chrome/chromium lancé)
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite> SELECT urls.url, urls.title FROM urls;
Parse error: database is locked (5)
  • Résultat (si chrome/chromium n'est pas lancé)
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
...
https://forums.commentcamarche.net/forum/affich-37746779-help-mee-error-ninja#newanswer|Help mee error ninja
https://forums.commentcamarche.net/forum/affich-37745249-librairie-math-en-c|Librairie math en c
...

Notes :

  • Selon ce que tu as l'intention de faire (par exemple du contrôle parental) il y a des outils spécifiquement prévus pour.
  • Ce que j'ai indiqué ne permet que d'examiner l'historique de chrome, mais si un autre navigateur (e.g., firefox) est installé, tu ne verras pas tous les sites visités. Si cela te suffit, il existe probablement des librairies sqlite dans le langage de programmation de ton choix.
  • On parle ici de données personnelles : l'utilisateur dont tu examines les données doit au préalable donner son accord, sans quoi tu t'exposes à des sanctions pénales.

Bonne chance

2
feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   6
 

Merci,  J'ai l'impression que si je copie ce fichier History et je travaille sur la copie alors je contourne ce problème de "database is locked". En tous cas, merci pour ton aide.

0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 

En effet, je me demande juste si ça la copie se passe bien si la base est modifiée pendant la fraction de seconde où la base est copiée, mais mis à part ça, ça doit marcher.

Est-ce que tu as toutes les réponses à ta question initiale ? Si oui peux-tu basculer le sujet en résolu ; et sinon, peux-tu nous dire ce qu'il reste à aborder ?

Bonne chance

0
feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   6 > mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention  
 

Malheureusement je viens de constater que l'OS bloque la copie de History tant que Chrome fonctionne. 

Dans mon cas, je peux très bien fermer Chrome et le réouvrir pour atteindre mon but. Pas très élégant, mais ca marche!!

0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884 > feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 

Voici une manière d'accéder de manière concurrente au fichier ~/.config/chromium/Default/History tirée de cette discussion (note qu'il y a quelques limitations) :

sqlite3  "file:///home/mando/.config/chromium/Default/History?immutable=1"

Si tu penses qu'on a fait le tour, merci de basculer le sujet en résolu.

Bonne chance

0
feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   6 > mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention  
 

Intéressant!

Je sais aussi que je peux ouvrir par API avec un flag "readonly". 

J'ai un peu moins de temps aujourd'hui, mais je vais m'y remettre ce weekend.

0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884 > feraudyh Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 

Lancer :

sqlite3 -readonly ~/.config/chromium/Default/History

... est l'approche naturelle, mais de mon côté, elle conduit au malgré tout au message :

Parse error: database is locked (5)

La discussion que je pointe dans #5 discute plus en détail de ce problème.

Bonne chance

0