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

58voto

Jeremy Taylor Points 556

Vous pouvez utiliser la fonctionnalité Appareils distants dans le débogueur Chrome pour vous connecter à Chrome sur l'appareil et accéder aux onglets. Il suffit d'élargir la liste des onglets visibles pour obtenir la liste complète, puis surligner et copier tout ce qui est affiché (y compris les URL) 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. Ainsi, au lieu de copier-coller, vous pouvez obtenir directement les URL 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 nombreux URL. On dirait que tout URL de plus de 100 caractères -- ce qui est mon cas environ 50% de tous mes onglets ouverts -- manquera sa fin.

0 votes

@peterflynn fonctionne toujours pour moi. Je viens d'exporter une URL qui faisait 432 caractères de long. Juste pour être sûr, vous ouvrez les outils de développement dans une fenêtre séparée, vous allez dans le volet "appareils distants", puis vous utilisez ctrl-shift-J pour ouvrir une deuxième fenêtre des outils de développement, et ensuite vous utilisez le script fourni ici, c'est bien ça?

52voto

Krustal Points 71

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


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

Comme l'a dit Jeremy, sélectionnez Appareils distants sous Autres outils 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 requis)
    • 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 a nécessité de taper plusieurs fois sur le numéro de build sous Paramètres A propos de l'appareil
  • une fois que c'est fait, branchez votre câble USB et autorisez la connexion MTP
  • lorsque le panneau des appareils distants 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 d'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 détaché (utilisez le symbole de points de suspension verticaux en haut à droite du panneau) pour pouvoir ouvrir ceci, sinon Commande+Option+J(MAC) Ctrl+Maj+J(WINDOWS) fermera simplement le premier panneau des outils de développement.
  • étendez la liste des premiers éléments à tous les onglets en cliquant sur 'Afficher plus'
  • pour scripter contre la liste, utilisez les quelques lignes de code suivantes [saisies 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 transformer la liste en une chaîne de texte formatée 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 ensuite une liste dans votre presse-papiers ressemblant à ceci:

[Comment puis-je exporter la liste des onglets Chrome ouverts? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/56635/how-can-i-export-the-list-of-open-chrome-tabs)
[Commencer 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 pour les développeurs 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})) va maintenant fonctionner

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 juste d'exporter une URL qui faisait 432 caractères. Assurez-vous d'utiliser le script que diamotte a fourni

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, alors vous pouvez faire ce qui suit:

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

    Les instances Chrome exposent l'accès à un protocole de débogage via un socket de domaine Unix avec l'adresse abstract "chrome_devtools_remote". La commande adb ci-dessus redirige les demandes faites au port 9222 sur 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.)

    Grâce à cela, nous pouvons exécuter wget ou curl (ou même un navigateur) et récupérer des informations de l'instance Chrome de l'appareil mobile.

  • Les informations de débogage sont fournies sous forme de données JSON via 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 de terminaison de l'API peuvent être trouvés à 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 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 le hack d'exécuter du code javascript pour récupérer la liste.

5 votes

C'est le chemin. Assurez-vous d'avoir Chrome réellement ouvert sur votre appareil et affiché (c'est-à-dire 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 des onglets qui avaient été définitivement fermés après le crash de mon navigateur un jour. Pour accéder aux informations dont vous avez besoin, votre appareil doit être rooté pour pouvoir exécuter une application de gestionnaire de fichiers avec accès aux fichiers root installés sur votre appareil. ES File Explorer ou Root Explorer sont mes recommandations.

  1. Naviguez jusqu'au dossier root 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 pouvez 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 existe également d'autres fichiers dans ce dossier appelés tab3, tab4, etc. qui contiennent des informations 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 à vérifier 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 des visites récentes sur les sites ici.

  4. Enfin, naviguez jusqu'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).

    • Dans le fichier SyncData.sqlite3, vous trouverez également un historique de toutes vos recherches Google (que je trouve parfois intéressant à lire).
    • Vous aurez besoin d'un navigateur de données Sqlite3 programme sur votre PC pour lire ce fichier. L'application devrait pouvoir exporter vers un fichier .CSV ou .XLS très utilisable que vous pouvez ouvrir dans MS Excel.

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

0 votes

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

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é, donc 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écoder 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, donc j'ai décidé de modifier le fichier inspect.js à partir de 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 resources.pak dans votre dossier Documents, faites glisser la copie et déposez-la sur le unpack.bat dans le dossier décompressé.

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

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

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

    changer 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 pak_index.ini et déposez-le sur le pak.bat. maintenant le resource.pak dans \documents\ a été mis à jour avec les modifications.

  6. Faites une sauvegarde du 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 génial! Comment as-tu découvert que c'était le fichier 11208.js que tu devais modifier? J'utilise une autre version de Chrome et je n'ai pas ce fichier...

2 votes

J'ai trouvé un moyen plus facile: il suffit d'éditer le inspect.js directement sur Chrome.

0 votes

@juanora: Comment as-tu réussi à l'éditer directement depuis Chrome? Au fait, je ne me souviens plus mais je pense avoir configuré la recherche de fichiers pour rechercher "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