Solución:
Puede usar la función Dispositivos remotos en el depurador de Chrome para conectarse a Chrome en el dispositivo y acceder a las pestañas. Simplemente expanda la lista de pestañas visibles para obtener la lista completa y luego resalte y copie todo lo que se muestra (incluidas las URL) en el portapapeles: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/
Me las arreglé para exportar ~ 400 pestañas de esta manera.
Acabo de unirme a este StackExchange para mostrar algo de agradecimiento por la respuesta de Jeremy anterior, y también agregar las pocas líneas de JS que usé para exportar la lista de pestañas (¡ya que copiar con el cursor no es ideal!)
Como dijo Jeremy, seleccione Remote devices
debajo More tools
en herramientas de desarrollo de Chrome ⋮
icono (parte superior derecha del panel):
- configurar la depuración USB en su teléfono (en
Settings
⇒Developer options
, root no es necesario)- tenga en cuenta que debe habilitar el
Developer options
menú, está oculto de forma predeterminada para proteger a los usuarios - en mi teléfono esto requirió tocar varias veces en el número de compilación debajo
Settings
⇒About Device
- tenga en cuenta que debe habilitar el
- Una vez hecho esto, conecte su USB y permita la conexión MTP
- cuando el panel del dispositivo remoto de Chrome devtools está abierto, el teléfono solicitará permitir la depuración de USB
- puedes optar por confiar siempre en la computadora
Ahora el dispositivo está conectado,
- abra una segunda vista de devtools en la vista de devtools desde la que seleccionó
Remote devices
para poder recuperar la lista de pestañas usando JavaScript- tenga en cuenta que debe tener devtools en modo emergente (use el símbolo de puntos suspensivos verticales en la parte superior derecha del panel) para poder subir esto, de lo contrario Comando + Opción + J (MAC)
Ctrl
+Shift
+J
(WINDOWS) simplemente cerrará el primer panel de devtools.
- tenga en cuenta que debe tener devtools en modo emergente (use el símbolo de puntos suspensivos verticales en la parte superior derecha del panel) para poder subir esto, de lo contrario Comando + Opción + J (MAC)
- expanda la lista desde los primeros elementos a todas las pestañas haciendo clic en “Mostrar más”
- para realizar un script contra la lista, use las siguientes líneas de código [entered in the console of the 2nd devtools window]
Para exportar una lista de todas las URL abiertas en Chrome para Android, elegí convertir la lista en una cadena de texto con formato de rebajas y copiarla en el portapapeles.
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'));
A continuación, tendrá una lista en su portapapeles con este aspecto:
[How can I export the list of open Chrome tabs? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/56635/how-can-i-export-the-list-of-open-chrome-tabs)
[Get Started with Remote Debugging Android Devices | Tools for Web Developers | Google Developers](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/)
[How To Enable USB Debugging On Your Android Phone](https://www.groovypost.com/howto/mobile/how-to-enable-usb-debugging-android-phone/)
[Configure On-Device Developer Options | Android Studio](https://developer.android.com/studio/debug/dev-options.html)
...
tl; dr:
- tener las herramientas de línea de comandos de Android instaladas en una máquina de desarrollo y la depuración USB habilitada en su dispositivo. No es necesario rootear el dispositivo
adb forward tcp:9222 localabstract:chrome_devtools_remote
wget -O tabs.json http://localhost:9222/json/list
Detalles:
Si tiene las herramientas de línea de comandos de Android instaladas en una máquina de desarrollo y ha habilitado la depuración de USB en su dispositivo Android, puede hacer lo siguiente:
-
Ejecutar
adb forward tcp:9222 localabstract:chrome_devtools_remote
en su máquina de desarrollo.Las instancias de Chrome exponen el acceso a un protocolo de depuración a través de un socket de dominio Unix con la dirección abstracta “
chrome_devtools_remote
“. Lo anterioradb
El comando reenvía las solicitudes realizadas al puerto 9222 en su máquina de desarrollo, hacia ese socket de dominio Unix. (Puede obtener una lista de todos los sockets de dominio Unix en el dispositivo Android escribiendoadb shell cat /proc/net/unix
.)Usando esto, podemos ejecutar
wget
ocurl
(o de hecho, un navegador) y recuperar información de la instancia de Chrome del dispositivo móvil. -
La información de depuración se proporciona como datos JSON a través de HTTP. Se puede obtener un archivo JSON que enumera las pestañas abiertas ejecutando
wget -O tabs.json http://localhost:9222/json/list
.(Otros puntos finales de la API se pueden encontrar en https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api).
Consulte aquí para obtener más detalles sobre cómo habilitar la depuración USB y aquí para obtener una descripción general de cómo funciona.