96 votos

¿Cómo puedo exportar la lista de pestañas abiertas de Chrome?

La función de sincronización de Chrome no recoge todas las pestañas abiertas en mi teléfono Android.

¿Se guardan las fichas en algún archivo al que pueda acceder?

Mi intención es exportar la lista de pestañas para poder ejecutar un restablecimiento de fábrica en el dispositivo.

Ejecutando Android 4.3

0 votos

Ojalá hubiera un complemento para ese fin.

0 votos

Debería haber una forma independiente de hacerlo sin root. Porque bootloader wipe. Quien inventó el dolor de cabeza del bootloader wipe debería ser despedido inmediatamente. El cargador de arranque es una trampa. Desbloquearlo obliga a borrar todos los datos, y algunas partes no se pueden respaldar sin desbloquearlo en primer lugar. Un círculo vicioso. Y luego está el cifrado y ARM TrustZone dolor de cabeza también.

3voto

Geoff Puntos 11

Esta solución te proporcionará un archivo de texto con las URL individuales de todas las pestañas que tengas abiertas en Chrome para Android.

  1. Como se menciona en este responder por Michael tienes que coger el fichero que contiene las pestañas actuales. Usando un explorador Root en el dispositivo, agarra este archivo y muévelo a la carpeta de tu elección en Windows: /data/data/com.android.chrome/app_tabs/0/tab_state

  2. Instale Herramientas GNU para Windows

  3. A veces hay un extraño carácter de flecha en el archivo que fastidia el script. Si ejecutas el script y trunca parte del archivo, mira el último carácter y probablemente será ese extraño carácter de flecha. Encuéntralo y sustitúyelo en el archivo original. Una vez que desaparezca, el script funcionará bien. Se parece a esto: -->

  4. Vaya a la línea de comandos (vaya a "Ejecutar" o a Win + R y escriba cmd ) y navegue hasta la carpeta que contiene sed.exe (donde lo hayas instalado en el paso 2.)

  5. Probablemente querrá mover el archivo original ( tab_state ) a la misma carpeta que contiene sed.exe . Todo será más fácil. Una vez hecho esto, ejecuta este script:

    sed -i "s/.\{6\}http/\r\n\r\nhttp/g" tab_state
  6. Esto modificará el archivo con todas las URL formateadas correctamente. Abra el archivo como archivo de texto y, a continuación, copie y pegue el contenido en un documento de Word o en cualquier otro lugar. Por alguna razón, si no copias y pegas los datos, al guardar el archivo se borran todos los saltos de línea y retornos de carro. Si las cosas se estropean, simplemente empieza de nuevo y hazlo otra vez. Cuando todo esté dicho y hecho, usted debe tener un archivo que contiene una lista de enlaces a todas las pestañas que tenía abiertas antes.

3voto

Huppie Puntos 4805

Necesitas ser Root o Chrome para leer /data/data/com.android.chrome/app_tabs/0/tab_state0

Puede utilizar este dirtycow exploit en dispositivos vulnerables para convertirse en Chrome y obtener tab_state0 de un dispositivo conectado:

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

Una vez que tenga acceso a tab_state0 extraiga las URL:

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

3voto

fn2197 Puntos 43

¡Instrucciones para Brave! Puede reemplazar el código en la consola de Louis Maddox con este, esto funciona a partir de hoy Brave Version 1.0.0 Chromium: 78.0.3904.97 (Official Build) (64-bit) . Observación: Puede abrir una nueva ventana de consola de la ventana de dispositivos remotos si activa la ventana de dispositivos remotos y pulsa 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)

Luego puedes pegar todas tus pestañas en un archivo de texto.

Si desea abrir todas las pestañas en su dispositivo actual, sustituya el botón tabs.forEach -parte con

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

Eso sí, no lo intentes con demasiadas pestañas abiertas en tu dispositivo.

He añadido esto después de la tabs parte para sincronizar manualmente las pestañas abiertas (valiente todavía falta esta característica y yo tenía 650 pestañas abiertas en mi dispositivo móvil) en las cargas de 50 pestañas:

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

Esto abrirá un lote de 50 pestañas de tu dispositivo en la ventana abierta del navegador. También muestra el recuento total de pestañas. Sin embargo, no cierres la pestaña "vacía" que queda para las herramientas de desarrollo y el dispositivo remoto si quieres abrir otro lote. Con Ctrl + TAB se pasa de una pestaña a otra, Ctrl +D para marcarlos como favoritos y Ctrl+W para cerrar la pestaña activa. Esta es la forma en que lo hice manualmente, siéntase libre de proponer cambios a este código para hacer la vida de todos más fácil.

2voto

w00t Puntos 1253

Michael identificó el archivo tab_state, queda descodificarlo. El siguiente script me funcionó (en kitkat KSH_VERSION='@(#)MIRBSD KSH R43 2013/02/19' o xenial BASH_VERSION='4.3.46(1)-release' en un archivo tab_state de Chrome 49.0.2623.105), imprime primero la última URL, entre las URLs elimina cualquier byte no imprimible y todos los bytes siguientes, y más si es necesario para que al menos 2 bytes sean eliminados. Después de cada URL imprime un espacio, luego los bytes imprimibles contiguos eliminados si los hay, luego una coma, luego el número de otros bytes eliminados (&dichos bytes entre paréntesis). Para imprimir sólo las URLs utilice el comando echo comentado.

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)://*}          #chip off a URL
      [[ $q = *url= ]]&&{
         p=${r%http?(s)://*url=*}  #special case URL within URL
         [[ $p = "$r" ]]||q=$p;}
      h=${r:${#q}}                 #the chip
      h=${h%%[! -~]*}              #remove unprintable&following bytes
      u=$((${#r}-${#q}-${#h}))     #no of said bytes removed
      p=$((u<b?b-u:0))             #no of more bytes to remove
      [[ $h ]];do
         echo "${h::${#h}-p} ${h:${#h}-p},$u(${r:${#r}-u})"
      #  echo "${h::${#h}-p}"
         r=$q b=2
   done
done

1voto

Ali Puntos 1375

En Windows, para extraer tab_state0 desde un archivo TitaniumBackup (que funciona en teléfonos rooteados)

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

Para obtener la lista de pestañas de tab_state0

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

En Windows instalaría https://scoop.sh/ entonces scoop install busybox 7zip

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X