URL de salida de pestañas abiertas de Firefox en la terminal

17

Me gustaría conocer las URL de las pestañas de firefox abiertas actualmente con un comando de terminal. ¿Hay alguna posibilidad?

De esta manera podría escribirlos en un archivo de texto y verlos más adelante; y recursos seguros (a menudo tengo muchas pestañas abiertas). Sé que hay un complemento para Firefox, pero me sentiría más cómodo escribiendo mi propio script.

aldorado
fuente

Respuestas:

8

Las URL actualmente abiertas de las pestañas abiertas de Firefox se almacenan en un sessionstore.jsarchivo que se encuentra en algún lugar del $HOME/.mozilla/firefox/XXXXXXXX.defaultdirectorio.

Entonces, puedes comenzar con algo como esto:

cat $HOME/.mozilla/firefox/*default/sessionstore.js | sed "s/{/\n/g" | egrep -o '"url".*"scroll"' | cut -d\" -f4

Usando catpodemos mostrar ese archivo, y con la ayuda de sed, egrepy cutseleccionamos solo las URL de las pestañas abiertas de Firefox de ese archivo.

Radu Rădeanu
fuente
Se necesitan comillas dobles para el egreppatrón zsh. Aparte de eso, buen consejo, gracias :)
moon.musick
1
¿Desea describir en pocas palabras cómo funciona este comando? A medida que lo entiendo, es como: obtener el contenido de sessionstore.js, canalizar a una operación para reemplazar \ "con \ n y canalizar a una operación para obtener todas las líneas que comienzan con http? ¿Es correcto? ¿Cuál es el uso de reemplazando \ "?
aldorado
1
@aldorado muestra el contenido del sessionstore.jsarchivo, luego reemplaza las ocurrencias "con \n(una nueva línea) y luego filtra solo las líneas que contienen httpo https. Intente mostrar el archivo y sabrá por qué necesita nuevas líneas :)
moon.musick
2
En el archivo sessionstore.jsno solo están las direcciones de las pestañas abiertas. Hay muchas otras direcciones.
Nicolas Barbulesco
1
Esta respuesta usa el archivo sessionstore.jsde Firefox. El problema es que este archivo pierde notoriamente pestañas. Lo que quiero aquí es una solución paralela, preguntando a Firefox cuáles son sus pestañas. Como en AppleScript.
Nicolas Barbulesco
5

Esa información se almacena en $ HOME / .mozilla / firefox / * default / sessionstore.js y su formato es json.

El siguiente ejemplo fue hecho para trabajar con PHP. Recorre todas las ventanas de Firefox, todas las pestañas y obtiene la información relevante, que es la última entrada dentro de "entradas". Si pudiéramos usar xpath para analizarlo, sería algo así como: / windows / * / tabs / last () / url (mi conocimiento de xpath está oxidado).

Puede copiar / pegar este código en una terminal:

cat $HOME/.mozilla/firefox/*default/sessionstore.js | php -r '
$json=json_decode(fgets(STDIN), TRUE);
foreach($json["windows"] as $w)
foreach($w["tabs"] as $t)
echo end($t["entries"])["url"]."\n";'

EDITAR : con perl (pero primero, sudo apt-get install libjson-pp-perl):

cat $HOME/.mozilla/firefox/*default/sessionstore.js | perl -e '
use JSON qw( decode_json );
my $json = decode_json(<STDIN>);
foreach my $w ( @{$json->{"windows"}} ) {
    foreach my $t ( @{$w->{"tabs"}} ) {
        print $t->{"entries"}[-1]->{"url"}."\n";
    }
}'
Hugo Vieira
fuente
Esta respuesta usa el archivo sessionstore.jsde Firefox. El problema es que este archivo pierde notoriamente pestañas. Lo que quiero aquí es una solución paralela, preguntando a Firefox cuáles son sus pestañas. Como en AppleScript.
Nicolas Barbulesco
¿Qué quieres decir con "pierde pestañas"? Actualmente estoy ejecutando Firefox con 5 pestañas y veo estas 5 pestañas cuando ejecuto estos scripts. Esta solución recorre todas las ventanas y todas las pestañas de cada ventana.
Hugo Vieira
Me refiero a esto .
Nicolas Barbulesco
La pregunta publicada por aldorado: (...) descubre las URL de las pestañas de firefox abiertas actualmente (...). Estás hablando de enumerar pestañas que se guardaron después de apagar Firefox. Además, ese error no parece tan notorio ...
Hugo Vieira
1
¡He probado ambos métodos para el recovery.jsarchivo con 9 ventanas y 840 pestañas y funcionaron de maravilla! - ¡justo después de conectar la salida a un archivo de texto, tuve que establecer el mapa de caracteres en ISO-8859-15 para el archivo del método perl ...!
DJCrashdummy
0

Así es como puede extraer la URL actual de la pestaña más activa / frontal en Firefox:

cat recovery.js | php -r '$json=json_decode(fgets(STDIN), TRUE); $tindex = $json["windows"][0]["selected"]-1; $eindex = $json["windows"][0]["tabs"][$tindex]["index"]-1; echo $json["windows"][0]["tabs"][$tindex]["entries"][$eindex]["url"];'

Explicación: Primero, encuentra el índice de la pestaña activa $tindexy luego el índice de la entrada del historial activo en esta pestaña $eindex.

Cada 15 segundos, Firefox crea una copia de seguridad *default/sessionstore-backups/recovery.js.

Lenar Hoyt
fuente
1
php5-cli necesita ser instalado para que esto funcione si agrega eso a su respuesta para mejorar. ¿Hay alguna manera de obtener todas las URL de pestañas, no solo la parte frontal? como pregunta el OP.
damien
Soy consciente de la falta de coincidencia de la pregunta y mi respuesta, sin embargo, Google lo dirigirá aquí si busca la información en mi respuesta.
Lenar Hoyt
0

Usando bash encontré la siguiente respuesta. Solo requiere paquete: jq. Se puede instalar con: apt-get install jq

jq '.windows[].tabs[].entries[].url' ~/.mozilla/firefox/xkxwaf4z.default/sessionstore-backups/recovery.js

Andras Mitzki
fuente