URL de saída de abas abertas do Firefox no terminal

17

Gostaria de descobrir os URLs das guias do Firefox atualmente abertas com um comando terminal. Existe alguma possibilidade?

Dessa forma, eu seria capaz de escrevê-los em um arquivo de texto e examiná-los posteriormente; e recursos seguros (geralmente tenho muitas guias abertas). Eu sei que existe um complemento para o firefox, mas eu ficaria mais confortável escrevendo meu próprio script.

aldorado
fonte

Respostas:

8

As URLs atualmente abertas das guias abertas do Firefox são armazenadas em um sessionstore.jsarquivo localizado em algum lugar do $HOME/.mozilla/firefox/XXXXXXXX.defaultdiretório.

Então, você pode começar de algo assim:

cat $HOME/.mozilla/firefox/*default/sessionstore.js | sed "s/{/\n/g" | egrep -o '"url".*"scroll"' | cut -d\" -f4

Usando cat, podemos exibir esse arquivo, e com a ajuda de sed, egrepe cutselecionamos apenas os URLs das guias abertas do Firefox nesse arquivo.

Radu Rădeanu
fonte
São necessárias aspas duplas para o egreppadrão em zsh. Fora isso, bom ponta, graças :)
moon.musick
1
Você gostaria de descrever em poucas palavras como esse comando funciona? Na minha opinião, é como: obter conteúdo do sessionstore.js, canalizar para uma operação para substituir \ "por \ n e canalizar para uma operação para obter todas as linhas que começam com http? Está certo? Qual é o uso de substituindo \ "?
Aldoado 28/08
1
@aldorado exibe o conteúdo do sessionstore.jsarquivo, substitui as ocorrências de "com \n(uma nova linha) e filtra apenas as linhas que contêm httpou https. Tente exibir o arquivo e você vai saber por que ele precisa de novas linhas :)
moon.musick
2
No arquivo, sessionstore.jsnão existem apenas os endereços das guias abertas. Existem muitos outros endereços.
Nicolas Barbulesco 5/10
1
Esta resposta usa o arquivo sessionstore.jsdo Firefox. O problema é que esse arquivo perde notoriamente abas. O que eu quero aqui é uma solução paralela, perguntando ao Firefox quais são as guias dele. Como no AppleScript.
Nicolas Barbulesco 5/10
5

Essas informações são armazenadas em $ HOME / .mozilla / firefox / * default / sessionstore.js e seu formato é json.

O exemplo a seguir foi criado para funcionar com PHP. Ele percorre todas as janelas do Firefox, todas as guias e obtém as informações relevantes, que são a última entrada dentro de "entradas". Se pudéssemos usar o xpath para analisá-lo, seria algo como: / windows / * / tabs / last () / url (meu conhecimento do xpath está enferrujado).

Você pode copiar / colar este código em um terminal:

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 : Com perl (mas primeiro, 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";
    }
}'
Hugo Vieira
fonte
Esta resposta usa o arquivo sessionstore.jsdo Firefox. O problema é que esse arquivo perde notoriamente abas. O que eu quero aqui é uma solução paralela, perguntando ao Firefox quais são as guias dele. Como no AppleScript.
Nicolas Barbulesco
O que você quer dizer com "perde abas"? No momento, estou executando o Firefox com 5 guias e vejo essas 5 guias ao executar esses scripts. Esta solução percorre todas as janelas e todas as guias de cada janela.
Hugo Vieira
Eu quero dizer isso .
Nicolas Barbulesco
A pergunta postada por aldorado: (...) descobre os URLs das guias do Firefox atualmente abertas (...). Você está falando sobre as guias de listagem que foram salvas após o encerramento do Firefox. Além disso, esse erro não parece que notório ...
Hugo Vieira
1
Eu testei os dois métodos para o recovery.jsarquivo com 9 janelas e 840 guias e eles funcionaram como um encanto! - logo após canalizando a saída em um arquivo de texto que eu tinha para definir o mapa de caracteres para ISO-8859-15 para o arquivo do método-perl ...!
DJCrashdummy
0

É assim que você pode extrair o URL atual da guia mais à frente / ativa no 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"];'

Explicação: Primeiro, ele encontra o índice da guia ativa $tindexe, em seguida, o índice da entrada do histórico ativo nesta guia $eindex.

A cada 15 segundos, o Firefox cria um backup *default/sessionstore-backups/recovery.js.

Lenar Hoyt
fonte
1
O php5-cli precisa estar instalado para que isso funcione. Você pode adicionar isso à sua resposta para melhorar. Existe uma maneira de pegar todos os URLs das guias e não apenas os da frente? como o OP pede.
damien
Estou ciente da incompatibilidade da pergunta e da minha resposta, no entanto, o Google o direcionará aqui se você procurar as informações na minha resposta.
Lenar Hoyt 22/03/2015
0

Usando o bash, encontrei a seguinte resposta. Requer apenas o pacote: jq. Pode ser instalado com: apt-get install jq

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

Andras Mitzki
fonte