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 peux accéder?

Mon intention est d'exporter la liste des onglets afin de pouvoir effectuer une réinitialisation d'usine sur l'appareil.

Tournant sous Android 4.3

0 votes

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

58voto

Jeremy Taylor Points 556

Vous pouvez utiliser la fonctionnalité Appareils distants du débogueur Chrome pour vous connecter à Chrome sur l'appareil et accéder aux onglets. Il vous suffit d'élargir la liste des onglets visibles pour obtenir la liste complète, puis de surligner et de copier tout ce qui est affiché (y compris les URLs) dans le presse-papiers : https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

J'ai réussi à exporter environ 400 onglets de cette manière.

4 votes

Je voulais mentionner que la liste du débogueur Chrome raccourcira les URL si elles sont trop longues, donc au lieu de copier-coller, vous pouvez obtenir les URL directement en utilisant la méthode dans la réponse de Louis Maddox

0 votes

@woojoo666: Il semble que les choses ont changé dans Chrome et maintenant la réponse de Louis tronque également la fin de nombreuses URL. Il semble que toute URL de plus de 100 caractères - ce qui dans mon cas représente environ 50% de tous mes onglets ouverts - perdra sa fin.

0 votes

@peterflynn fonctionne toujours pour moi. Vient d'exporter une url qui faisait 432 caractères. Juste pour être sûr, vous ouvrez les outils de développement dans une fenêtre sortie, allez dans le volet "appareils distants", puis utilisez ctrl-shift-J pour ouvrir une deuxième fenêtre d'outils de développement, et ensuite utilisez le script fourni ici, correct?

52voto

Krustal Points 71

Mise à jour en octobre 2022 : Selon Débogage à distance des appareils Android, la page chrome://inspect/#devices a remplacé le panneau de débogueur Appareils distants, ce qui a cassé le JS dans cette réponse et des réponses similaires.


Je viens de rejoindre StackExchange pour témoigner de mon appréciation pour la réponse de Jeremy ci-dessus, et ajouter également les quelques lignes de JS que j'ai utilisées pour exporter la liste des onglets (car copier avec le curseur n'est pas idéal !)

Comme l'a dit Jeremy, sélectionnez Appareils distants sous Outils supplémentaires sur l'icône des outils de développement Chrome (en haut à droite du panneau) :

  • activez le débogage USB sur votre téléphone (sous Paramètres``Options pour les développeurs, le root n'est pas nécessaire)
    • notez que vous devez activer le menu Options pour les développeurs, il est caché par défaut pour protéger les utilisateurs
    • sur mon téléphone, cela nécessitait de taper plusieurs fois sur le numéro de build sous Paramètres``A propos de l'appareil
  • une fois cela fait, branchez votre USB et autorisez la connexion MTP
  • lorsque le panneau d'appareil distant des outils de développement Chrome est ouvert, le téléphone demandera alors d'autoriser le débogage USB
    • vous pouvez choisir de toujours faire confiance à l'ordinateur

Maintenant que l'appareil est connecté,

  • ouvrez une 2ème vue des outils de développement sur la vue des outils de développement à partir de laquelle vous avez sélectionné Appareils distants pour pouvoir récupérer la liste des onglets en utilisant JavaScript
    • notez que vous devez avoir les outils de développement en mode pop-up (utilisez le symbole des trois points verticaux en haut à droite du panneau) pour pouvoir ouvrir cela, sinon Commande+Option+J(MAC) Ctrl+Shift+J(WINDOWS) fermera simplement le premier panneau des outils de développement.
  • développez la liste des premiers éléments à tous les onglets en cliquant sur 'Afficher plus'
  • pour utiliser un script sur la liste, utilisez les quelques lignes de code suivantes [entrées dans la console de la 2ème fenêtre des outils de développement]

Pour exporter une liste de toutes les URL ouvertes sur Chrome pour Android, j'ai choisi de simplement mettre la liste sous forme de texte formaté en markdown et de la copier dans le presse-papiers

let bookmarkList = Array.from(document.querySelectorAll('.widget>.vbox'))
  .map(e => e.shadowRoot)
  .map(e => e && e.querySelector('.device-page-list'))
  .find(e => e);

let bookmarks = Array.from(bookmarkList.querySelectorAll('.vbox'))
  .map(e => `[${e.querySelector('.device-page-title').innerHTML}](${e.querySelector('x-link').innerHTML})`);

copy(bookmarks.join('\n'));

Vous aurez alors une liste dans votre presse-papiers ressemblant à ceci :

[Comment puis-je exporter la liste des onglets ouverts sur Chrome ? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/56635/how-can-i-export-the-list-of-open-chrome-tabs)
[Démarrer le débogage à distance des appareils Android | Outils pour les développeurs Web | Développeurs Google](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/)
[Comment activer le débogage USB sur votre téléphone Android](https://www.groovypost.com/howto/mobile/how-to-enable-usb-debugging-android-phone/)
[Configurer les options du développeur sur l'appareil | Android Studio](https://developer.android.com/studio/debug/dev-options.html)
...

2 votes

Chrome a changé, tabs = Array.from(document.querySelectorAll('div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ .device-page-list .vbox'), s => ({name: s.querySelector('.device-page-title').textContent, url: s.querySelector('.devtools-link')._href})) fonctionnera maintenant

0 votes

Notez que en utilisant cette technique, toute URL de plus de 100 caractères aura sa fin coupée.

0 votes

@peterflynn fonctionne toujours pour moi. Je viens d'exporter une url qui faisait 432 caractères. Assurez-vous d'utiliser le script fourni par diamotte

43voto

phlummox Points 361

Tl;dr:

  • avoir les outils de ligne de commande Android installés sur une machine de développement, et le débogage USB activé sur votre appareil. L'appareil n'a pas besoin d'être rooté
  • adb forward tcp:9222 localabstract:chrome_devtools_remote
  • wget -O tabs.json http://localhost:9222/json/list

Détails:

Si vous avez les outils de ligne de commande Android installés sur une machine de développement, et avez activé le débogage USB sur votre appareil Android, vous pouvez faire ce qui suit:

  • Exécutez adb forward tcp:9222 localabstract:chrome_devtools_remote sur votre machine de développement.

    Les instances de Chrome exposent l'accès à un protocole de débogage via un socket de domaine Unix avec l'adresse abstrait "chrome_devtools_remote". La commande adb ci-dessus renvoie les requêtes faites au port 9222 de votre machine de développement vers ce socket de domaine Unix. (Vous pouvez obtenir une liste de tous les sockets de domaine Unix sur l'appareil Android en tapant adb shell cat /proc/net/unix.)

    En utilisant cela, nous pouvons exécuter wget ou curl (ou en effet, un navigateur) et récupérer des informations à partir de l'instance Chrome de l'appareil mobile.

  • Les informations de débogage sont fournies sous forme de données JSON sur HTTP. Un fichier JSON listant les onglets ouverts peut être obtenu en exécutant wget -O tabs.json http://localhost:9222/json/list.

    (D'autres points d'extrémité de l'API peuvent être trouvés sur https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api.)

Voir ici pour plus de détails sur l'activation du débogage USB, et ici pour un aperçu de son fonctionnement.

Édité pour ajouter:

  • Certains navigateurs basés sur chromium peuvent ne pas créer le socket de domaine Unix "chrome_devtools_remote" (par exemple, Brave a envisagé de le supprimer), et certains utilisateurs ont signalé que Chrome pour Android ne le fait plus. Vous pouvez vérifier quels sockets de domaine Unix abstraits existent en exécutant la commande adb shell cat /proc/net/unix | grep '@': si vous ne voyez pas "@chrome_devtools_remote" quelque part dans la liste, alors votre navigateur ne le crée pas. Je peux confirmer que Vivaldi pour Android crée bien le socket, à partir de 2024 (version 6.5.3217.103).

0 votes

wget -O - -q https://git.io/Jvfzk | bash

4 votes

+1 car je trouve cette réponse plus utile que l'astuce d'exécuter du code JavaScript pour récupérer la liste.

5 votes

Voici la manière. Assurez-vous d'avoir Chrome réellement ouvert sur votre appareil et affiché (c.-à-d. ne laissez pas l'écran se mettre en veille)

15voto

Michael Points 141

J'ai découvert cette solution lorsque je cherchais à récupérer les onglets qui avaient été définitivement fermés après que mon navigateur a planté un jour. Pour accéder aux informations dont vous avez besoin, votre appareil doit être rooté afin que vous puissiez exécuter une application de gestionnaire de fichiers avec accès aux fichiers racine installés sur votre appareil. ES File Explorer ou Root Explorer sont mes recommandations.

  1. Naviguez jusqu'au dossier racine de votre appareil (la partition système protégée) → sélectionnez DATA → sélectionnez com.android.chrome.

  2. Il existe plusieurs endroits où vous pourrez trouver des informations sur vos onglets actuels.

    1. Le premier dossier à vérifier est app_tabs, puis 0. Dans ce dossier, il devrait y avoir un fichier appelé tab_state qui contient une liste de tous vos onglets actuels.
    2. Il y a aussi d'autres fichiers dans ce dossier appelés tab3, tab4, etc. qui contiennent des infos sur les onglets actuels.
    3. À mon avis, vous avez besoin d'un "éditeur de texte / éditeur sql" spécial pour lire le contenu de certains de ces fichiers car l'encodage est différent.
  3. Le prochain endroit à regarder est /data/com.android.chrome/app_chrome/Default/. Dans ce dossier, vous trouverez un fichier appelé History. Selon votre situation, vous pouvez trouver une bonne liste de visites récentes de sites ici.

  4. Enfin, accédez au dossier Sync Data. Ici, vous trouverez les informations qui sont synchronisées avec Google (et cela devrait inclure tous les onglets que vous avez actuellement synchronisés sur d'autres appareils).

[

Cela pourrait être utile pour quelqu'un, je suppose.

](http://sqlitebrowser.org/)

0 votes

Re "éditeur de texte spécial" pour tab_state0 : strings tab_state0 | grep -oh "http.*$" devrait fonctionner pour vous donner une liste d'URL. J'ai également utilisé cela dans Comment récupérer les onglets ouverts d'opera à partir des données de sauvegarde après que le téléphone soit briqué ?.

4voto

priorincantatio Points 41

La réponse la plus récente de simonsan ne fonctionne pas sur ma version actuelle de Chrome 75.0.3770.100. Je n'ai pas la classe vbox qui est utilisée dans chaque script publié, alors j'ai réussi à écrire un code qui fonctionne maintenant :

tabs = document.querySelectorAll('#devices div /deep/ div /deep/ div /deep/ div /deep/ .row')
str = '';
for (i=0;i

``

J'ai trouvé le post de Louis Maddox et les captures d'écran très utiles pour déchiffrer son script donc voici le mien avec l'arborescence mise à jour.

capture d'écran


Quoi qu'il en soit, les solutions proposées pour contourner la limite de 100 caractères ne fonctionnaient pas pour moi, alors j'ai décidé de modifier le fichier inspect.js depuis la source en suivant ces étapes :

  1. Téléchargez le chrome-pak-customizer et décompressez-le.

  2. Depuis C:\Program Files (x86)\Google\Chrome\Application\75.0.3770.100 (où 75.0.3770.100 est le nom de la version) faites une copie du fichier resources.pak dans votre dossier Documents, faites glisser la copie et déposez-la sur le fichier unpack.bat dans le dossier décompressé.

  3. Dans \document\resources_unpaked\ prenez le fichier 11208.js et ouvrez-le.

  4. À la ligne 537 ou en recherchant 100 il y a ces lignes

    let text = value ? String(value) : ''; if (text.length > 100) { text = text.substring(0, 100) + '\u2026'; }

    en changeant le 100 en 300 devrait suffire, cela peut couper certains liens de recherche Google mais les miens fonctionnaient toujours.

  5. Enregistrez le fichier et dans le même dossier faites glisser le fichier pak_index.ini et déposez-le sur le fichier pak.bat. maintenant le fichier resource.pak dans \documents\ a été mis à jour avec les modifications.

  6. Faites une sauvegarde de resource.pak car on ne sait jamais, fermez Chrome et remplacez l'original par la version mise à jour.

Maintenant le script affichera jusqu'à 300 caractères pour les URL.

``

1 votes

Vraiment sympa! Comment as-tu découvert que c'était le fichier 11208.js que tu devais éditer? J'utilise une autre version de Chrome et je n'ai pas ce fichier...

2 votes

J'ai trouvé un moyen plus simple: il suffit de modifier directement inspect.js sur Chrome.

0 votes

@juanora : comment avez-vous réussi à l'éditer directement depuis Chrome ? Au fait, je ne me souviens pas mais je pense avoir configuré la recherche de fichiers pour chercher "100" à l'intérieur des fichiers, à ce stade quelques fichiers devraient apparaître

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