Выходной URL открытых вкладок Firefox в терминале

17

Я хотел бы узнать URL-адреса открытых в данный момент вкладок Firefox с помощью команды терминала. Есть ли возможность?

Таким образом, я мог бы записать их в текстовый файл и посмотреть на них позже; и безопасные ресурсы (у меня часто есть много открытых вкладок). Я знаю, что есть дополнение для Firefox, но мне было бы удобнее написать свой собственный скрипт.

aldorado
источник

Ответы:

8

Открытые в настоящий момент URL открытых вкладок Firefox хранятся в 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мы можем отобразить этот файл, и с помощью sed, egrepи cutмы выбираем только URL-адреса открытых вкладок Firefox из этого файла.

Раду Рэдяну
источник
Двойные кавычки, необходимые для egrepшаблона в zsh. Кроме этого, хороший совет, спасибо :)
moon.musick
1
Не могли бы вы в двух словах описать, как работает эта команда? Насколько я понимаю, это выглядит так: получить содержимое файла sessionstore.js, направить в операцию, чтобы заменить \ "на \ n, и направить в операцию, чтобы получить все строки, начинающиеся с http? Это правильно? В чем смысл использования заменить \ "?
Альдорадо
1
@aldorado отображает содержимое sessionstore.jsфайла, а затем заменяет вхождений "с \n(перевод строки) , а затем отфильтровывает только строки , содержащие httpили https. Попробуйте отобразить файл, и вы поймете, зачем ему нужны переводы строки :)
moon.musick
2
В файле sessionstore.jsприсутствуют не только адреса открытых вкладок. Есть много других адресов.
Николас Барбулеско
1
Этот ответ использует файл sessionstore.jsFirefox. Проблема в том, что этот файл, как известно, теряет вкладки. Здесь мне нужно параллельное решение, спрашивающее Firefox о его вкладках. Как в AppleScript.
Николас Барбулеско
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.
Николас Барбулеско
Что вы подразумеваете под "теряет вкладки"? В настоящее время я использую Firefox с 5 вкладками и вижу эти 5 вкладок при запуске этих скриптов. Это решение обходит все окна и все вкладки каждого окна.
Хьюго Виейра
Я имею в виду это .
Николас Барбулеско
Вопрос, опубликованный aldorado: (...) узнать URL-адреса открытых в данный момент вкладок Firefox (...). Вы говорите о списках вкладок, которые были сохранены после закрытия Firefox. Кроме того, этот баг не кажется таким пресловутым ...
Хьюго Виейра
1
Я протестировал оба метода для recovery.js-файла с 9 окнами и 840 вкладками, и они работали как шарм! - сразу после передачи вывода в текстовый файл мне пришлось установить карту символов в ISO-8859-15 для файла perl-метода ...!
DJCrashdummy
0

Вот как вы можете извлечь текущий URL самой передней / активной вкладки в Firefox:

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.

Ленар Хойт
источник
1
php5-cli должен быть установлен для этого, чтобы вы могли добавить это к своему ответу, чтобы улучшить. Есть ли способ получить все URL вкладки, а не только переднюю? как ОП просит.
Дэмиен
Мне известно о несоответствии вопроса и моего ответа, однако Google направит вас сюда, если вы запросите информацию в моем ответе.
Ленар Хойт
0

Используя bash, я нашел следующий ответ. Требуется только пакет: JQ. Его можно установить с помощью: apt-get install jq

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

Андрас Мицки
источник