如何转储在 Firefox 中打开的所有 URL

如何转储在 Firefox 中打开的所有 URL

想象一下你正在自学的情况,你突然想起你明天需要提交作业,所以你现在需要做这些事情。现在,您关闭选项卡并打开有关您工作的新网站。处理完所有事情后,您需要旧选项卡,这些选项卡已经关闭。现在你在历史中到处寻找它们,浪费了很多时间。

我想运行一个脚本来转储当前在 Firefox 中打开的所有 URL,从中我可以使用xargs类似的方法恢复旧会话。添加书签似乎不是一个解决方案,因为我在需要时从未找到它们。

我认为这可能有帮助

lsof -ai

但这没有用。这可以通过一些 bash 脚本来解决吗?如果不可能的话我会尝试使用xdotool

答案1

题外话,我会尽力向您展示书签并没有那么糟糕。您所需要的只是为您保存的会话起一个好名字。

当您右键单击选项卡时,您可以选择Bookmark All Tabs。然后会出现一个弹出窗口,您可以命名将包含所有选项卡的文件夹。

恢复会话也如此简单。在书签中找到会话文件夹,右键单击并选择Open All in Tabs

答案2

OneTab 扩展正是这样做的。它也适用于 Chromium/Chrome。

答案3

我正在使用 Firefox 69 和建议的方法 https://support.mozilla.org/en-US/questions/1221836对我有用。

不久,当前打开的选项卡列表将存储在 <fx_profile>/sessionstore-backups/recovery.jsonlz4.顾名思义,它是一个使用 LZ4 压缩的 JSON 文件。

对其进行备份并使用此在线工具转储打开的选项卡列表:https://www.jeffersonscher.com/ffu/scrounger.html

答案4

Arkadiusz 的回答非常好,但问题是该recovery.jsonlz4文件包含太多我不知道如何处理的数据。https://support.mozilla.org/en-US/questions/1221836给出了一个很好的提示如何去做。

我编写了一个dmenu包装器 bash 脚本,该脚本将文件recovery.jsonlz4本身复制到具有给定名称的某个位置,并在需要时进行恢复。

#!/bin/bash
SESSIONS="$HOME/.netsessions/"
PROFILE="$HOME/.mozilla/firefox/<use-your-profile>.default/"
[[ ! -d $PROFILE ]] && notify-send Firefox "Profile was not found" && exit 0
[[ ! -d $SESSIONS ]] && mkdir -p $SESSIONS
fireicon=/usr/share/icons/Paper/512x512/apps/firefox.png
subs=`ls "$SESSIONS"`
opt=$(echo -e "Create\nOpen\nDelete"| dmenu -fn "Droid Sans Mono-20" -i -p "firefox session:")

[[ "$opt" = "" ]] && exit 1
if [ "$opt" = "Create" ]; then
    (! pidof firefox > /dev/null ) && notify-send -t 1000 -i $fireicon Firefox "Firefox is not running" && exit 1
    opt1=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-20' -i -p "Name it to create") 
    if [ -z "$opt1" ]; then
        exit 0
    fi
    cp $PROFILE/sessionstore-backups/recovery.jsonlz4 $SESSIONS/$opt1 > /dev/null && notify-send -t 1000 -i $fireicon Firefox "Session created" && exit 0
elif [ "$opt" = "Open" ]; then
    opt2=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-20' -i -p "Name it to open") 
    if [ -z "$opt2" ]; then
        exit 0
    fi
    killall firefox >/dev/null 2>&1
    cp $SESSIONS/$opt2 $PROFILE/sessionstore.jsonlz4 > /dev/null
    setsid firefox >/dev/null 2>&1 &
elif [ "$opt" = "Delete" ]; then
    opt3=$(echo "$subs"|dmenu -fn 'Droid Sans Mono-15' -i -p "Name it to delete") 
    if [ -z "$opt3" ]; then
        exit 0
    fi
    rm "$SESSIONS"/"$opt3" > /dev/null && notify-send -t 1000 -i $fireicon group "Session deleted" && exit 0
elif [ -z "$opt" ]; then
    exit 0
fi

我使用键绑定来调用此脚本。如果可以进行任何改进,请告诉我。
附:我使用的是火狐浏览器69

相关内容