95 votes

Comment puis-je exporter la liste des onglets ouverts dans Chrome ?

La fonction de synchronisation de Chrome ne récupère pas toutes les onglets ouverts sur mon téléphone Android.

Est-ce que les onglets sont stockés dans un fichier quelque part que je pourrais accéder?

Mon intention est d'exporter la liste des onglets afin de pouvoir réinitialiser l'appareil.

Tournant sous Android 4.3

0 votes

Chrome://history/syncedTabs pour toute personne dont la fonction de synchronisation fonctionne d'ailleurs

3voto

Darren Points 21

Ce contournement vous permettra d'obtenir un fichier texte avec des URL individuelles pour tous les onglets que vous avez ouverts dans Chrome pour Android.

  1. Comme mentionné dans cette réponse de Michael, vous devez récupérer le fichier contenant les onglets actuels. Utilisez un explorateur root sur l'appareil pour récupérer ce fichier et déplacez-le vers le dossier de votre choix dans Windows : /data/data/com.android.chrome/app_tabs/0/tab_state

  2. Installez GNU Tools for Windows

  3. Parfois, il y a un caractère de flèche étrange dans le fichier qui perturbe le script. Si le script s'exécute et tronque une partie du fichier, regardez le dernier caractère et ce sera probablement ce caractère de flèche étrange. Trouvez-le/remplacez-le dans le fichier d'origine. Une fois qu'il est parti, le script fonctionnera correctement. Il ressemble à ceci : -->

  4. Allez à l'invite de commande (allez dans "Exécuter" ou Win+R, et tapez cmd) et naviguez vers le dossier contenant sed.exe (où que vous l'ayez installé à l'étape 2.)

  5. Vous voudrez probablement déplacer le fichier d'origine (tab_state) dans le même dossier contenant sed.exe. Cela rendra tout plus facile. Une fois que vous l'avez fait, exécutez ce script :

    sed -i "s/.\{6\}http/\r\n\r\nhttp/g" tab_state
  6. Cela modifiera le fichier avec toutes les URL formatées correctement. Ouvrez le fichier en tant que fichier texte puis copiez-collez le contenu dans un document Word ou un autre emplacement. Pour une raison quelconque, si vous ne copiez pas les données, lorsque vous enregistrez le fichier, toutes les sauts de ligne/retours à la ligne sont effacés. Si quelque chose ne va pas, recommencez simplement. Au final, vous devriez avoir un fichier qui contient une liste de liens vers tous les onglets que vous aviez ouverts auparavant.

3voto

Huppie Points 4805

Vous devez être root ou Chrome pour lire /data/data/com.android.chrome/app_tabs/0/tab_state0

Vous pouvez utiliser cette faille dirtycow sur des appareils vulnérables pour devenir Chrome et obtenir tab_state0 depuis un appareil connecté:

make root
adb shell
run-as com.android.chrome
chmod 711 /data/data/com.android.chrome/app_tabs/0
chmod 644 /data/data/com.android.chrome/app_tabs/0/tab_state0
exit
cp /data/data/com.android.chrome/app_tabs/0/tab_state0 /sdcard/
exit
adb pull /sdcard/tab_state0

Une fois que vous avez accès à tab_state0, extrayez les URL :

LC_ALL=C grep -a -o 'http[[:print:]]*' tab_state0

3voto

simonsan Points 31

Instructions pour Brave! Vous pouvez remplacer le code dans la console de Louis Maddox avec celui-ci, cela fonctionne à ce jour Brave Version 1.0.0 Chromium: 78.0.3904.97 (Official Build) (64-bit). Remarque: Vous pouvez ouvrir une nouvelle fenêtre de console de la fenêtre des appareils distants si vous activez la fenêtre des appareils distants et appuyez sur Ctrl+Shift+J

tabs = Array.from(document.querySelector('div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ div.vbox.flex-auto').shadowRoot.querySelectorAll('.devices-view .device-page-list .vbox'), s => ({name: s.querySelector('.device-page-title').textContent, url: s.querySelector('.device-page-url .devtools-link').getAttribute('href')}))

str = ' ';

tabs.forEach(e => {
    str += '- ['+ e.name + '](' + e.url +')\n';
})
copy(str)

Ensuite, vous pouvez coller tous vos onglets dans un fichier texte.

Si vous souhaitez ouvrir tous les onglets sur votre appareil actuel, remplacez la partie tabs.forEach par

tabs.forEach(e => {
    window.open(e.url, '_blank');
})

Ne le faites pas avec trop d'onglets ouverts sur votre appareil, cependant.

J'ai ajouté ceci après la partie tabs pour synchroniser manuellement les onglets ouverts (Brave manque toujours de cette fonctionnalité et j'avais 650 onglets ouverts sur mon appareil mobile) par lots de 50 onglets:

i=0;
j=0;
tabs.forEach(e => {
  if(i<50){
    i++;
    window.open(e.url, '_blank');
  }
  j++;
})
console.log("Onglets au total:"+j);

Cela ouvrira un lot de 50 onglets depuis votre appareil dans la fenêtre du navigateur ouvert. Cela montre également le nombre total d'onglets. Ne fermez pas l'onglet 'vide' restant pour ces outils de développement et l'appareil distant, si vous souhaitez ouvrir un autre lot. Avec Ctrl + TAB vous changez d'onglets, Ctrl +D pour les mettre en favoris et Ctrl+W pour fermer l'onglet actif. C'est ainsi que je l'ai fait manuellement, n'hésitez pas à proposer des changements à ce code pour faciliter la vie de chacun.

0 votes

Merci pour cela! -- votre code ci-dessus n'a pas fonctionné à partir de Version 1.26.67 Chromium: 91.0.4472.114 (Official Build) (64-bit) MAIS, m'a quand même donné espoir que Brave fonctionnerait. J'ai réussi à le faire fonctionner, et je poste mon code ci-dessous... Bon je n'ai pas la REP pour ça, mais voici le code .js de la console pour Brave sur Android 11 en date de juin 2021.

2voto

w00t Points 1253

Michael a identifié le fichier tab_state, il reste à le décoder. Le script suivant a fonctionné pour moi (dans kitkat KSH_VERSION='@(#)MIRBSD KSH R43 2013/02/19' ou xenial BASH_VERSION='4.3.46(1)-release' sur un fichier tab_state de Chrome 49.0.2623.105), il affiche d'abord la dernière URL, entre les URLs il supprime tout octet non imprimable et tous les octets suivants, et plus si nécessaire pour supprimer au moins 2 octets. Après chaque URL, il affiche un espace, puis les octets imprimables contigus supprimés le cas échéant, puis une virgule, puis le nombre d'autres octets supprimés (&dits octets entre parenthèses). Pour afficher uniquement les URLs, utilisez la commande echo commentée ci-dessous.

tab_state=/data/data/com.android.chrome/app_tabs/0/tab_state
[[ $KSH_VERSION ]]||shopt -s extglob       #set if bash
(cat $tab_state;echo)|while read -r r;do b=
   while
      q=${r%http?(s)://*}          #déchiffrer une URL
      [[ $q = *url= ]]&&{
         p=${r%http?(s)://*url=*}  #cas spécial URL dans URL
         [[ $p = "$r" ]]||q=$p;}
      h=${r:${#q}}                 #le déchiffrement
      h=${h%%[! -~]*}              #supprimer les octets non imprimables et suivants
      u=$((${#r}-${#q}-${#h}))     #nombre d'octets supprimés
      p=$((u

1voto

Ali Points 1375

Sous Windows, pour extraire tab_state0 à partir d'une archive TitaniumBackup (qui fonctionne sur les téléphones rootés)

7z e TitaniumB\com.android.chrome-20180918-001302.tar.gz -so | 7z e -si -ttar tab_state0 -r

Pour obtenir la liste des onglets de tab_state0

sed -b "s/^.\{20\}//g" tab_state0 | sed -b "s/.\{6\}http/\nhttp/g" > my-tabs.md

Sous Windows, j'installerais https://scoop.sh/ puis scoop install busybox 7zip

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X