在终端中输出打开的 Firefox 选项卡的 URL

在终端中输出打开的 Firefox 选项卡的 URL

我想用终端命令找出当前打开的 Firefox 选项卡的 URL。 有可能吗?

这样我就可以将它们写入文本文件并在以后查看它们;并且安全资源(我经常打开许多选项卡)。我知道 Firefox 有一个附加组件,但我更喜欢编写自己的脚本。

答案1

当前打开的 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。

答案2

该信息存储在$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";
    }
}'

答案3

这需要jq软件包,可以使用以下命令安装sudo apt-get install jq

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

检查路径~/.mozilla/firefox并替换xkxwaf4z为正确的名称。

答案4

你可以通过以下方法提取 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

每 15 秒 Firefox 都会在 中创建一个备份*default/sessionstore-backups/recovery.js

相关内容