Как получить URL с вкладки Firefox из терминала?
Есть ли способ получить такой URL, используя какие-то команды?
4 ответа
Есть несколько файлов, которые содержат информацию о ваших сессиях:
~/.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
,
I. Когда Firefox открыт:
1.а Если вы хотите получить все 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://Ask-ubuntu.ru/
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://Ask-ubuntu.ru/
https://www.mozilla.org/en-US/
# ClosedTabs:
https://www.yahoo.com/
# LastSession:
https://Ask-ubuntu.ru/
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://Ask-ubuntu.ru/
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.б. Вы можете поместить разделитель между данными для каждой вкладки:
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://Ask-ubuntu.ru/
# 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.Б. и 2.Б. все вместе:
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://Ask-ubuntu.ru/
# 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 \
...
Рекомендации:
- Подобный вопрос в AskUbuntu;
- Sed - Введение и Учебник Брюса Барнетта;
man sed
;man egrep
;man cut
,
2022 Ответ
Как упоминает Бао, ответ, получивший наибольшее количество голосов, больше не работает в современном 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
Принятый ответ не работает, Firefox удалил этот файл.
Итак, вот мое решение (я) этого:
Метод 1: используйте инструменты автоматизации клавиатуры, такие как xdotool, для публикации ключей для копирования URL-адреса в буфер обмена.
У этого метода есть некоторые недостатки, то есть он изменит текущий фокус курсора (сначала нужно перейти в адресную строку, используя Ctrl-L)
Способ 2: использовать Grease Monkey, привязать клавишу F12 к GM_setClipboard(document.location); используйте инструменты автоматизации клавиатуры, отправьте клавишу F12 в firefox; смотреть буфер обмена, сохранить его (возможно, даже сделать резервную копию и восстановить буфер обмена).
Перетаскивания
Перетащите его и бросьте. Перетащите его от значка слева от поля адреса. В большинстве браузеров вы можете увидеть значок i.
Копировать вставить
Вы также можете использовать копирование и вставку. Скопируйте текст из поля адреса. Вставьте его в терминал.