有没有办法使用某种命令来获取这样的 URL?
答案1
这个答案已经过时了,虽然在我看来它仍然有价值,但请注意2022 年答案以下提供@dotancohen。
有一些文件包含有关您的会话的信息:
~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js
其中包含有关当前会话的信息,还包含有关已关闭的选项卡和上一个会话的信息。每 15 秒 Firefox 会在此文件中创建一次备份。关闭 Firefox 时此文件不可用。~/.mozilla/firefox/*.default/sessionstore.js
其中包含有关 Firefox 浏览器关闭时上次会话的信息。打开 Firefox 时此文件不可用。~/.mozilla/firefox/*.default/sessionstore-backups/previous.js
其中包含有关上一次会话的信息。
对 的内容分析recovery.js
表明,对于每个标签页,只有当前 URL 的条目包含字符串attributes
。
一、Firefox 打开时:
1.A.如果您想要获取当前会话中打开的所有标签的 URL,您可以使用以下命令:
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js | \
sed "s/\\_closedTabs.*//" | \
sed "s/{/\n{/g" | \
egrep -o 'url.*attributes' | \
cut -d\" -f3
* 请注意,您必须将copy
所有paste
行一起放到一个终端窗口中并按Enter。
在哪里:
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js
将打印此文件的内容;sed "s/\\_closedTabs.*//"
将删除字符串_closedTabs
;之后的所有内容sed "s/{/\n{/g" | \
会在每个前面添加一个换行符{
;egrep -o 'url.*attributes'
url
只会过滤以 开头和结尾的行attributes
。如果不-o
选择,则过滤包含字符串的整行;cut -d\" -f3
将用作"
分隔符并仅过滤第 3 列。
就我而言,该命令的输出是:
https://askubuntu.com/
https://www.mozilla.org/en-US/
1.B.如果您想立即获取当前会话和前一个会话的数据,可以使用以下命令:
printf "\n# CurrentSession:\n"; \
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js | \
sed "s/\\_closedTabs/\{\"url\":\"# ClosedTabs:\"attributes/g" | \
sed "s/\\lastSessionState/\{\"url\":\"# LastSession:\"attributes/" | \
sed "s/{/\n{/g" | \
egrep -o 'url":"*.*attributes*' | \
cut -d\" -f3 | \
sed "s/#/\n#/" \
; echo
在哪里:
printf "\n# CurrentSession:\n";
# CurrentSession:
将在两个换行符之间打印;sed "s/\\_closedTabs/\{\"url\":\"# ClosedTabs:\"attributes/g"
将替换整个“文件”中的字符串(_closedTabs
选项);"url":"# ClosedTabs:"attributes
g
sed "s/\\lastSessionState/\{\"url\":\"# LastSession:\"attributes/"
将替换lastSessionState
为"url":"# LastSession:"attributes
;sed "s/#/\n#/"
会在每个前面添加一个换行符#
。; echo
将在底部添加一个空白行。
就我而言,该命令的输出是:
# CurrentSession:
https://askubuntu.com/
https://www.mozilla.org/en-US/
# ClosedTabs:
https://www.yahoo.com/
# LastSession:
https://askubuntu.com/
https://www.abv.bg/
# ClosedTabs:
https://www.google.com/gmail/about/
https://www.yahoo.com/
2.A.如果您想获取历史记录,可以使用:
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js | sed "s/\\_closedTabs.*//" | sed "s/{/\n{/g" | egrep 'url":"http*' | cut -d\" -f4
就我而言,该命令的输出是:
https://askubuntu.com/
https://www.google.bg/search?client=ubuntu&channel=fs&q=firefox&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=pTKyWIitGqTs8wewj4KgDQ
https://www.mozilla.org/bg/firefox/new/
https://www.mozilla.org/en-US/
2.B.您可以在每个选项卡的数据之间放置一个分隔符:
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js | \
sed "s/\\_closedTabs.*//" | \
sed "s/{/\n{/g" | \
sed "s/entries/url\":\"# TAB:/g" | \
egrep 'url":"*' | \
cut -d\" -f4 | \
sed "s/#/\n#/"
就我而言,该命令的输出是:
# TAB:
about:startpage
https://askubuntu.com/
# TAB:
https://www.google.bg/search?client=ubuntu&channel=fs&q=firefox&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=pTKyWIitGqTs8wewj4KgDQ
https://www.mozilla.org/bg/firefox/new/
https://www.mozilla.org/en-US/
3.1.B. 和 2.B. 一起:
printf "\n# CurrentSession:\n"; \
cat $HOME/.mozilla/firefox/*.default/sessionstore-backups/recovery.js | \
sed "s/\\_closedTabs/\{\"url\":\"# ClosedTabs:/g" | \
sed "s/\\lastSessionState/\{\"url\":\"# LastSession:/" | \
sed "s/entries/url\":\"# TAB:/g" | \
sed "s/{/\n{/g" | \
egrep 'url":"*' | \
cut -d\" -f4 | \
sed "s/#/\n#/" \
; echo
就我而言,该命令的输出是:
# CurrentSession:
# TAB:
https://host.bg/
https://admin.host.bg/
# TAB:
https://www.mediawiki.org/wiki/MediaWiki
# TAB:
https://en.wikipedia.org/wiki/Main_Page
# ClosedTabs:
# TAB:
about:startpage
https://www.yahoo.com/
# LastSession:
# TAB:
about:startpage
https://askubuntu.com/
# ClosedTabs:
# TAB:
https://www.mozilla.org/en-US/
https://www.google.com/gmail/about/
II. Firefox 关闭时:
当 Firefox 关闭时,您可以获取上次会话的数据。方法与上面解释的相同,但recovery.js
您必须使用sessionstore.js
(或previous.js
):
cat $HOME/.mozilla/firefox/*.default/sessionstore.js \
...
参考:
答案2
2022 年答案
正如 Bao 所提到的,得票最高的答案在现代 Firefox 中不再起作用,因为它所依赖的文件有两种格式变化:
- 它现在是一个压缩文件,所以我们用
lz4jsoncat
它来读取它。 - 识别该文件中的当前选项卡和历史记录项的方法不同。现在我们必须对选项卡进行排序
lastAccessed
,然后从index
字段中找到正确的历史记录项。我更喜欢jq
这样做。
这行代码应该可以做到:
lz4jsoncat ~/.mozilla/firefox/*.default-release/sessionstore-backups/recovery.jsonlz4 | jq -r ".windows[0].tabs | sort_by(.lastAccessed)[-1] | .entries[.index-1] | .url"
要在 Ubuntu 上安装必备工具,请运行以下命令:
$ sudo aptitude install jq lz4json
答案3
拖放
将其拖放。将其从图标拖到地址栏左侧。在大多数浏览器中,您可能会看到i图标的 。
复制粘贴
您也可以使用复制和粘贴。从地址栏复制文本。将其粘贴到终端中。
答案4
接受的答案现在不起作用,firefox 已经删除了该文件。
以下是我的解决方案:
方法 1:使用键盘自动化工具(例如 xdotool)发布按键以将 url 复制到剪贴板中。
这种方法有一些缺点,那就是它会改变光标的当前焦点(你需要先使用Ctrl-L移动到地址栏)
方法 2:使用 Grease Monkey,将键 F12 绑定到 GM_setClipboard(document.location);使用键盘自动化工具,将键 F12 发送到 Firefox;查看剪贴板,保存(甚至可以备份和恢复剪贴板)。