Вихідна URL-адреса відкритих вкладок Firefox у терміналі


17

Я хотів би дізнатися URL-адреси відкритих в даний час вкладок Firefox з командою терміналу. Чи є можливість?

Таким чином я міг би записати їх у текстовий файл і подивитися на них; і безпечні ресурси (у мене часто багато відкритих вкладок). Я знаю, що є додатки для firefox, але мені було б зручніше писати власний сценарій.

Відповіді:


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";'

EDIT : За допомогою 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.