URL di output delle schede firefox aperte nel terminale


17

Vorrei scoprire gli URL delle schede Firefox attualmente aperte con un comando terminale. C'è qualche possibilità?

In questo modo sarei in grado di scriverli in un file di testo e guardarli in seguito; e risorse sicure (spesso ho molte schede aperte). So che esiste un componente aggiuntivo per Firefox, ma sarebbe più comodo scrivere il mio script.

Risposte:


8

Gli URL attualmente aperti delle schede di Firefox aperte sono memorizzati in un sessionstore.jsfile che si trova da qualche parte nella $HOME/.mozilla/firefox/XXXXXXXX.defaultdirectory.

Quindi, puoi iniziare da qualcosa del genere:

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

Usando catpossiamo visualizzare quel file, e con l'aiuto di sed, egrepe cutselezioniamo solo gli URL delle schede di Firefox aperte da quel file.


Virgolette doppie necessarie per il egrepmodello in zsh. A parte questo, bel suggerimento, grazie :)
moon.musick,

1
Vorresti descrivere in poche parole come funziona questo comando? Come ho capito, è come: ottenere il contenuto di sessionstore.js, eseguire il pipe a un'operazione per sostituire \ "con \ n e pipe a un'operazione per ottenere tutte le righe che iniziano con http? Esatto? A che cosa serve sostituendo \ "?
aldorado,

1
@aldorado visualizza il contenuto del sessionstore.jsfile, quindi sostituisce le occorrenze di "con \n(una nuova riga) e quindi filtra solo le righe contenenti httpo https. Prova a visualizzare il file e saprai perché ha bisogno di nuove righe :)
moon.musick,

2
Nel file sessionstore.jsnon ci sono solo gli indirizzi delle schede aperte. Ci sono molti altri indirizzi.
Nicolas Barbulesco,

1
Questa risposta utilizza il file sessionstore.jsdi Firefox. Il problema è che questo file perde notoriamente schede. Quello che voglio qui è una soluzione parallela, che chiede a Firefox quali sono le sue schede. Come in AppleScript.
Nicolas Barbulesco,

5

Tali informazioni sono archiviate in $ HOME / .mozilla / firefox / * default / sessionstore.js e il suo formato è json.

L'esempio seguente è stato realizzato per funzionare con PHP. Esplora tutte le finestre di Firefox, tutte le schede e ottiene le informazioni pertinenti che è l'ultima voce all'interno di "voci". Se potessimo usare xpath per analizzarlo, sarebbe qualcosa come: / windows / * / tabs / last () / url (la mia conoscenza di xpath è arrugginita).

Puoi copiare / incollare questo codice su un terminale:

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";'

EDIT : Con perl (ma prima, 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";
    }
}'

Questa risposta utilizza il file sessionstore.jsdi Firefox. Il problema è che questo file perde notoriamente schede. Quello che voglio qui è una soluzione parallela, che chiede a Firefox quali sono le sue schede. Come in AppleScript.
Nicolas Barbulesco,

Cosa intendi con "perde le schede"? Attualmente sto eseguendo Firefox con 5 schede e vedo queste 5 schede quando eseguo questi script. Questa soluzione percorre tutte le finestre e tutte le schede di ciascuna finestra.
Hugo Vieira,


La domanda posta da aldorado: (...) scopri gli URL delle schede firefox attualmente aperte (...). Stai parlando di schede di elenco che sono state salvate dopo aver spento Firefox. Inoltre, quel bug non sembra così famoso ...
Hugo Vieira,

1
ho testato entrambi i metodi per il recovery.jsfile con 9 finestre e 840 schede e hanno funzionato come un incantesimo! - subito dopo aver convogliato l'output in un file di testo ho dovuto impostare la mappa dei caratteri su ISO-8859-15 per il file del metodo perl ...!
DJCrashdummy,

0

Ecco come è possibile estrarre l'URL corrente della scheda più attiva / attiva in 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"];'

Spiegazione: Prima trova l'indice della scheda attiva $tindexe quindi l'indice della voce della cronologia attiva in questa scheda $eindex.

Ogni 15 secondi Firefox crea un backup *default/sessionstore-backups/recovery.js.


1
php5-cli deve essere installato affinché funzioni per poterlo aggiungere alla tua risposta per migliorare. C'è un modo per afferrare tutti gli URL delle schede non solo quelli più anteriori? come chiede l'OP.
Damien,

Sono a conoscenza della mancata corrispondenza della domanda e della mia risposta, tuttavia Google ti indirizzerà qui se cerchi le informazioni nella mia risposta.
Lenar Hoyt,

0

Usando bash ho trovato la seguente risposta. Richiede solo il pacchetto: jq. Può essere installato con: apt-get install jq

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.