2 votes

Safari : utilisation de dtrace pour enquêter sur la synchronisation des onglets iCloud

Je cherche à savoir comment Safari synchronise les onglets via iCloud.

Pour commencer, je veux vraiment savoir comment Safari met à jour sa liste partagée d'onglets, ce qui signifie qu'il faut le surveiller ou surveiller un démon en arrière-plan pour les créations et modifications de fichiers. (Mon hypothèse étant : lorsque j'ouvre un nouvel onglet sur mon téléphone, iCloud envoie un push à mon Mac qui met à jour la liste " onglets iCloud " de Safari).

J'essaie d'utiliser dtrace pour surveiller les ouvertures de fichiers de Safari, avec quelque chose de simple comme :

sudo dtrace -n 'syscall::open*:entry /execname == "Safari"/ { printf ("%s", copyinstr(arg0)); }'

mais dtrace imprime cette erreur :

dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #1 at DIF offset 24

(Il s'agit de la même erreur comme l'a demandé quelqu'un sur les forums d'Apple )

Déboguer un étrange problème de permissions iTunes avec DTrace avait des informations sur un problème similaire avec iTunes, mais je ne comprends pas très bien quel saut périlleux ils ont effectué en gdb pour qu'iTunes soit dtrace -utilisable.

  1. Quelqu'un peut-il m'aider à comprendre Déboguer un étrange problème de permissions iTunes avec DTrace : quelle est la cause de l'erreur, et quelle est la résolution ?
  2. Avez-vous des connaissances ou des informations supplémentaires sur la synchronisation des onglets iCloud ? Quel processus les synchronise ? Où sont-ils stockés sur le disque ?

0voto

Oskar Points 1242

Le fichier qui contient les onglets iCloud est :

~/Library/SyncedPreferences/com.apple.Safari.plist

C'est un fichier binaire, donc vous pouvez utiliser plutil pour convertir une copie en JSON/XML pour le traitement. Je m'attendais à ce que la synchronisation se fasse via bird mais un peu de spéléologie avec brctl log -w et d'autres fouilles légères ne reflètent pas les changements que j'apporte à la base de données des onglets. Il y a pas mal de projets intéressants sur github qui analysent ce fichier en Python, JS ainsi qu'une belle application de barre de menu :

Savoir où les données persistent sur le disque montre que syncdefaultsd est le processus de propriété :

sudo fsusage -w | grep com.apple.Safari

Malheureusement, ce cadre privé et ce démon ne sont pas documentés par Apple, à l'exception de ce que vous pouvez glaner dans le plist de launchd pour le service.

1 votes

C'est fantastique, merci ! Maintenant je peux plonger dans ma sauvegarde Time Machine pour retrouver des onglets perdus

0 votes

Je ne connaissais pas non plus les projets qui lisent ce fichier. Cool !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X