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


17

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

这样,我便可以将它们写入文本文件,稍后再查看它们。和安全的资源(我经常有很多打开的标签)。我知道firefox有一个附加组件,但是编写自己的脚本会更舒适。

Answers:


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我们可以显示文件,并与帮助sedegrepcut我们只选择从该文件打开Firefox的标签的URL。


中的egrep模式需要双引号zsh。除此之外,还有个不错的提示,谢谢:)
moon.musick

1
您想用几句话来描述此命令如何工作吗?就像我得到的那样:获取sessionstore.js的内容,将其传递给用\ n替换\“的操作,并传递给获取以http开头的所有行的操作?是吗?取代\“?
aldorado

1
@aldorado它显示sessionstore.js文件的内容,然后"\n(换行符)替换出现的内容,然后仅过滤出包含http或的行https。尝试显示文件,您将知道为什么需要换行符:)
moon.musick

2
在文件中sessionstore.js,不仅有打开的选项卡的地址。还有许多其他地址。
Nicolas Barbulesco

1
该答案使用sessionstore.jsFirefox 的文件。问题在于该文件众所周知会丢失制表符。我想要的是一种并行解决方案,询问Firefox的选项卡是什么。就像在AppleScript中一样。
Nicolas Barbulesco

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中一样。
Nicolas Barbulesco

“丢失标签”是什么意思?我当前正在运行带有5个选项卡的Firefox,运行这些脚本时会看到这5个选项卡。此解决方案遍历所有窗口以及每个窗口的所有选项卡。
雨果·维埃拉2013年

我是这个意思。
Nicolas Barbulesco

aldorado发布的问题:(...)找出当前打开的Firefox选项卡(...)的URL。您正在谈论的是关闭firefox之后保存的列表选项卡。此外,该错误似乎并不臭名昭著……
Hugo Vieira

1
我已经recovery.js用-9个窗口和840个选项卡测试了-file的两种方法,它们的工作原理就像一个魅力!-刚过管道输出到一个文本文件,我不得不设置的字符映射ISO-8859-15的的文件Perl的方法 ...!
DJCrashdummy15年

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,而不仅仅是最前面的URL?就像OP问的那样。
达米安

我知道问题和答案不匹配,但是如果您在我的答案中查找信息,Google会将您引导到这里。
Lenar Hoyt 2015年

0

使用bash我找到了以下答案。它只需要包装:jq。可以使用以下命令安装:apt-get install jq

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.