2022 年答案

2022 年答案

有没有办法使用某种命令来获取这样的 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:"attributesg
  • 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 中不再起作用,因为它所依赖的文件有两种格式变化:

  1. 它现在是一个压缩文件,所以我们用lz4jsoncat它来读取它。
  2. 识别该文件中的当前选项卡和历史记录项的方法不同。现在我们必须对选项卡进行排序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;查看剪贴板,保存(甚至可以备份和恢复剪贴板)。

相关内容