Depuis quelques années, j’ai régulièrement un petit souci : de temps en temps, une MAJ de macOS me casse mon historique de navigation dans Safari. Et pour récupérer les données, c’est horrible. J’avais déjà parlé de ça il y a un peu plus de deux ans, et je n’ai toujours pas de méthode miracle.
Quelques explications d’abord. Dans les vieilles versions de Safari (jusqu’à Mavericks inclus), l’historique se trouvait dans un gros fichier plist
. Depuis Yosemite, il s’agit d’une base de données SQLite (history.db
). La base de données a d’ailleurs une particularité énervante, sa taille est limitée à 80 Mo au maximum. Visiblement, la limite a été pensée pour la synchronisation iCloud mais elle a un effet pervers : elle limite le nombre d’entrées. Typiquement, mon Safari est configuré pour garder 1 an d’historique, mais j’en ai nettement moins (7 à 8 mois, je remonte jusqu’à mi-mars) parce que la base est remplie.
La récupération
A chaque fois qu’une MAJ me casse l’historique, c’est horrible. Le principal problème, c’est que si vous remettez une sauvegarde, iCloud a tendance à remettre la version stockée chez Apple, même si elle est moins complète. En fait, je n’ai pas trouvé de solution pour forcer l’ancienne version de l’historique directement : après quelques minutes (parfois quelques heures) l’historique en ligne remplace le fichier.
J’ai une technique, mais je ne suis pas certain à 100 % qu’elle fonctionne, parce que j’ai tenté pas mal de choses. Elle nécessite une copie du fichier, un programme pour manipuler du SQLite (comme ce programme) et un peu de chance.
En gros, il faut exporter les tables history_items
et history_visits
de la base de données à récupérer (en SQL). Ensuite, attendre qu’iCloud mette bien en place sa propre copie de la base history.db
, fermer Safari et importer les deux tables dans la base de Safari. Normalement, à l’ouverture, Safari va mouliner le temps de traiter les données et il va récupérer les données.
L’étape suivante consiste à forcer iCloud à utiliser la nouvelle base. Il faut d’abord activer le menu de Debug de Safari avec la commande suivante dans le Terminal (après avoir fermé Safari).
defaults write com.apple.Safari IncludeInternalDebugMenu 1
Ensuite, une fois Safari relancé et après avoir vérifié qu’iCloud n’a pas modifié la base (ça peut prendre quelques dizaines de minutes, et je vous conseille un redémarrage pour être certain), il faut forcer l’historique dans les menus : Debug -> Sync iCloud History. Normalement, ça va envoyer les données sur iCloud en remplacement de celles stockées. Le problème, c’est qu’iCloud est une boîte noire, donc vous ne pouvez pas savoir si les données ont été modifiées ni après combien de temps. Vu la taille de ma base, j’ai dû attendre pas mal de temps pour être certain que la nouvelle était bien en place, merci l’upload en ADSL.
En fait, ça semble avoir fonctionné chez moi (ça va faire quelques jours et mon historique est encore là), mais je ne sais pas du tout si c’est bien cette manipulation là qui a fonctionné. Le côté fermé, obscure et pour mon bien d’iCloud me bloque complètement sur ce problème idiot et récurrent.
Au passage, je vous conseille d’ailleurs de rentrer ces deux commandes dans l’invite de commandes SQL pour vérifier la base et gagner quelques Mo.
Vacuum;
pragma integrity_check;
En pratique, si quelqu’un connait une méthode plus efficace (ou surtout plus propre) pour récupérer l’historique depuis un backup, ça m’intéresse.
Hello.
Pour ma part, c’est bêtement Google qui me conserve mon historique via mon compte depuis que moi aussi j’ai eu ce problème.
Marrant, alors que tout le monde se bat pour avoir une navigation privée, effacer son historique de navigation et échapper le plus possible à l’espionnite ambiante, d’autres se battent pour garder un maximum de traces de leur passage sur le net (80Mo de fichier texte !!!), voire de les offrir à google.
Quel est l’intérêt, car je suppose qu’il y en a un ?
Ou alors je confond avec autre chose ?
Dans mon cas, y a un intérêt précis : je fais des recherches sur des sites d’enchères, et l’historique est le meilleur moyen de voir ce que j’ai déjà vérifié :D
Plus parfois retrouver une page que j’avais considérée comme inutile un jour et puis finalement non.
Après, effacer l’historique a pas vraiment de rapport avec « l’espionnite ». Parce que bon, l’historique en local de mon navigateur, je peux l’effacer tant que je veux, les sites ils savent que je suis venu.
Merci pour cette précision, effectivement je n’avais pas vu cela comme ça
mais si, les sites savent que tu es venu, ceux qui pénètrent sur ta machine frauduleusement, l’aprennent aussi :-)
Quand à tout mettre,volontairement sur google…
@JFD:
A partir du moment ou tu as une adresse gmail et que tu navigues avec ton compte ouvert, Google se souvient de tout.
@jfd : personne entre sur ma machine (et les applications peuvent pas accéder à l’historique)
Pour Google, le simple fait d’avoir un compte implique quand même qu’ils ont pas mal de données
Et c’est pour cela que je n’ai pas de compte google, et que j’essaie de bloquer un max de mouchards dans ma navigation (faut pas non plus rêver, j’ai pas la prétention de tout bloquer)
Je n’ai d’ailleurs pas non plus de smartphone, donc pas d’obligation d’avoir un compte chez le système concurrent :-)
–personne entre sur ma machine —
a part de ne jamais être connecté à internet, de vivre seul en permanence et de coucher avec son ordinateur, on ne peut être sûr de cela.