ターミナルで開いているFirefoxタブの出力URL


17

ターミナルコマンドを使用して、現在開いているFirefoxタブのURLを確認したいと思います。可能性はありますか?

この方法で、それらをテキストファイルに書き込み、後で見ることができます。安全なリソース(多くの場合、開いているタブが多数あります)。firefoxのアドオンがあることは知っていますが、自分でスクリプトを作成する方が快適でしょう。

回答:


8

開いているFirefoxタブの現在開いているURLは、ディレクトリのsessionstore.jsどこかにあるファイルに保存されます$HOME/.mozilla/firefox/XXXXXXXX.default

したがって、次のようなものから始めることができます。

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

使用してcat、我々は、そのファイルを表示することができ、かつの助けを借りてsedegrepそしてcut私たちは、そのファイルから開かれたFirefoxのタブのURLのみを選択します。


egrepパターンに必要な二重引用符zsh。それ以外、素敵なヒント、ありがとう:)
moon.musick

1
このコマンドがどのように機能するかを簡単に説明しますか?セッションストアのコンテンツを取得し、操作にパイプして\ "を\ nに置き換え、httpで始まるすべての行を取得する操作にパイプしますか?それは正しいですか? \ "を置き換えますか?
アルドラド

1
@aldoradoは、sessionstore.jsファイルの内容を表示し、出現"\n(改行)で置き換え、httpまたはを含む行のみをフィルターで除外しますhttps。ファイルを表示してみてください。改行が必要な理由がわかります:)
moon.musick

2
ファイルsessionstore.jsには、開いているタブのアドレスだけではありません。他にも多くのアドレスがあります。
ニコラスバルブレスコ

1
この答えはsessionstore.jsFirefox のファイルを使用しています。問題は、このファイルがタブを失うことで有名です。ここで欲しいのは、Firefoxに彼のタブが何であるかを尋ねる並列ソリューションです。AppleScriptのように。
ニコラスバルブレスコ

5

その情報は$ HOME / .mozilla / firefox / * default / sessionstore.jsに保存され、その形式はjsonです。

次の例は、PHPで動作するように作成されています。すべてのFirefoxウィンドウ、すべてのタブを調べ、「エントリ」内の最後のエントリである関連情報を取得します。xpathを使用して解析できる場合、/ windows / * / tabs / last()/ urlのようになります(xpathの知識は錆びています)。

このコードを端末にコピー/貼り付けできます:

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

編集:perlを使用します(ただし、最初に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";
    }
}'

この答えはsessionstore.jsFirefox のファイルを使用しています。問題は、このファイルがタブを失うことで有名です。ここで欲しいのは、Firefoxに彼のタブが何であるかを尋ねる並列ソリューションです。AppleScriptのように。
ニコラスバルブレスコ

「タブを失う」とはどういう意味ですか?現在5つのタブでFirefoxを実行していますが、これらのスクリプトを実行すると5つのタブが表示されます。このソリューションは、すべてのウィンドウと各ウィンドウのすべてのタブを調べます。
ヒューゴビエイラ

私はこれを意味ます。
ニコラスバルブレスコ

aldoradoが投稿した質問:(...)現在開かれているFirefoxタブのURLを調べる(...)。あなたはFirefoxをシャットダウンした後に保存されたタブをリストすることについて話している。また、そのバグが...それは悪名高いようではありません
ヒューゴ・ヴィエイラ

1
recovery.js9つのウィンドウと840のタブを持つ-fileの両方のメソッドをテストしましたが、それらは魅力的に機能しました!-直後の配管出力をテキストファイルに私が設定した文字マップISO-8859-15のファイルのためのperl-方法を ...!
DJCrashdummy

0

これは、Firefoxの最前面/アクティブタブの現在のURLを抽出する方法です。

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

説明:最初に、アクティブなタブのインデックスを見つけ、$tindex次にこのタブでアクティブな履歴エントリのインデックスを見つけます$eindex

Firefoxは15秒ごとにバックアップを作成し*default/sessionstore-backups/recovery.jsます。


1
これを機能させるには、php5-cliをインストールする必要があります。これを回答に追加して改善してください。最前面だけでなく、すべてのタブのURLを取得する方法はありますか?OPが尋ねるような。
ダミアン

私は質問と私の答えの不一致を知っていますが、あなたが私の答えの情報を求める場合、Googleはあなたをここに導きます。
Lenarホイト

0

bashを使用すると、次の答えが見つかりました。パッケージjqのみが必要です。apt-get install jqでインストールできます。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.