Ausgabe-URL der geöffneten Firefox-Registerkarten im Terminal


17

Ich möchte die URLs der aktuell geöffneten Firefox-Registerkarten mit einem Terminalbefehl herausfinden. Gibt es eine Möglichkeit?

Auf diese Weise könnte ich sie in eine Textdatei schreiben und sie später ansehen. und sichere Ressourcen (ich habe oft viele offene Tabs). Ich weiß, dass es ein Add-On für Firefox gibt, aber ich würde es einfacher finden, mein eigenes Skript zu schreiben.

Antworten:


8

Die aktuell geöffneten URLs der geöffneten Firefox-Registerkarten werden in einer sessionstore.jsDatei gespeichert , die sich irgendwo im $HOME/.mozilla/firefox/XXXXXXXX.defaultVerzeichnis befindet.

Sie können also von so etwas wie dem Folgenden ausgehen:

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

Mit catHilfe von sedkönnen wir diese Datei anzeigen egrepund cutnur die URLs der geöffneten Firefox-Registerkarten aus dieser Datei auswählen.


Für das egrepMuster in werden doppelte Anführungszeichen benötigt zsh.
Abgesehen

1
Möchten Sie kurz beschreiben, wie dieser Befehl funktioniert? Wie ich es verstehe, ist es wie folgt: Inhalt der sessionstore.js abrufen, zu einer Operation leiten, um \ "durch \ n zu ersetzen, und zu einer Operation leiten, um alle Zeilen abzurufen, die mit http beginnen? Stimmt das? Wofür ist das? ersetzen \ "?
Aldorado

1
@aldorado zeigt den Inhalt der sessionstore.jsDatei an, ersetzt dann das Vorkommen von "durch \n(eine neue Zeile) und filtert dann nur Zeilen heraus, die httpoder enthalten https. Versuchen Sie, die Datei anzuzeigen, und Sie werden wissen, warum Zeilenumbrüche erforderlich sind :)
moon.musick

2
In der Datei sessionstore.jsbefinden sich nicht nur die Adressen der geöffneten Registerkarten. Es gibt viele andere Adressen.
Nicolas Barbulesco

1
Diese Antwort verwendet die Datei sessionstore.jsvon Firefox. Das Problem ist, dass diese Datei notorisch Tabs verliert. Was ich hier möchte, ist eine parallele Lösung, in der ich Firefox frage, wie seine Registerkarten lauten. Wie in AppleScript.
Nicolas Barbulesco

5

Diese Informationen sind in $ HOME / .mozilla / firefox / * default / sessionstore.js gespeichert und haben das Format json.

Das folgende Beispiel wurde für die Arbeit mit PHP erstellt. Es durchläuft alle Firefox-Fenster, alle Registerkarten und ruft die relevanten Informationen ab, die der letzte Eintrag innerhalb von "Einträgen" sind. Wenn wir xpath verwenden könnten, um es zu analysieren, wäre es so etwas wie: / windows / * / tabs / last () / url (meine xpath-Kenntnisse sind verrostet).

Sie können diesen Code kopieren / in ein Terminal einfügen:

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

BEARBEITEN : Mit Perl (aber zuerst muss sudo apt-get libjson-pp-perl installieren):

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

Diese Antwort verwendet die Datei sessionstore.jsvon Firefox. Das Problem ist, dass diese Datei notorisch Tabs verliert. Was ich hier möchte, ist eine parallele Lösung, in der ich Firefox frage, wie seine Registerkarten lauten. Wie in AppleScript.
Nicolas Barbulesco

Was meinst du mit "Tabs verlieren"? Ich verwende derzeit Firefox mit 5 Registerkarten und sehe diese 5 Registerkarten, wenn ich diese Skripte verwende. Diese Lösung durchläuft alle Fenster und alle Registerkarten jedes Fensters.
Hugo Vieira

Ich meine dies .
Nicolas Barbulesco

Die Frage von aldorado: (...) Finde die URLs der aktuell geöffneten Firefox-Tabs heraus (...). Sie sprechen über das Auflisten von Registerkarten, die nach dem Herunterfahren von Firefox gespeichert wurden. Auch dieser Fehler scheint nicht so berüchtigt ...
Hugo Vieira

1
Ich habe beide Methoden für die recovery.js-Datei mit 9 Fenstern und 840 Registerkarten getestet und sie funktionierten wie ein Zauber! - unmittelbar nach kochend der Ausgabe in eine Textdatei musste ich die eingestellte Zeichenübersicht auf ISO-8859-15 für die Datei der perl-Methode ...!
DJCrashdummy

0

So können Sie die aktuelle URL der vordersten / aktivsten Registerkarte in Firefox extrahieren:

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

Erläuterung: Zuerst wird der Index der aktiven Registerkarte $tindexund dann der Index des aktiven Verlaufseintrags in dieser Registerkarte gefunden $eindex.

Alle 15 Sekunden erstellt Firefox ein Backup in *default/sessionstore-backups/recovery.js.


1
php5-cli muss installiert sein, damit dies funktioniert. Fügen Sie dies zu Ihrer Antwort hinzu, um sie zu verbessern. Gibt es eine Möglichkeit, alle Tabs zu greifen, nicht nur die vordere? wie der OP fragt.
Damien

Mir ist bekannt, dass die Frage und meine Antwort nicht übereinstimmen. Google leitet Sie jedoch hierher weiter, wenn Sie die Informationen in meiner Antwort suchen.
Lenar Hoyt

0

Mit bash habe ich die folgende Antwort gefunden. Es erfordert nur Paket: jq. Es kann installiert werden mit: apt-get install jq

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.