Posso ver o histórico do Firefox com o terminal?

29

Existe um comando para mostrar o histórico do Firefox no Terminal?

sem a necessidade de entrar no histórico do Firefox graficamente.

nux
fonte
Você poderia adicionar o motivo de querer fazer isso?
Por que você não deseja usar o próprio Firefox?
1
@ user25656: Se você quer ser rápido, use a linha de comando. Você pode fazer estatísticas a partir disso. Você pode pesquisar com expressões regulares (por exemplo, usando grep), criar gráficos, etc. Tudo isso não é possível no firefox. Pelo menos não sem invadir um complemento.
Erik

Respostas:

28

Esta página descreve quais informações específicas do usuário são armazenadas pelo Firefox e onde. (E é isso que a ajuda do Mozilla tem a dizer na exibição de arquivos .sqlite.)

Ele lista três tipos de histórico:

  • Favoritos e histórico de navegação: O arquivo places.sqlite contém todos os seus favoritos do Firefox e a lista de todos os sites que você visitou ...

  • Histórico de preenchimento automático: o arquivo formhistory.sqlite lembra o que você pesquisou na barra de pesquisa do Firefox e as informações inseridas em formulários nos sites ...

  • Histórico de downloads: O arquivo downloads.sqlite lembra o que você baixou. ...

Como você pode ver, os três históricos não são simples arquivos de texto, mas arquivos de banco de dados no sqliteformato.

Uma maneira de visualizar .sqlitearquivos é usando sqlite3( sudo apt-get install sqlite3).

Abra um terminal e cda pasta que contém o que você deseja visualizar. No meu caso, é isso ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite lista os arquivos sqlite.

Execute sqlite3 places.sqlite(se places.sqlite é o que você deseja visualizar). Você verá algo assim:

$ cd ~/.mozilla/firefox/w4wcp85s.default 
$ sqlite3 places.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

Agora, há várias coisas que você pode fazer. (Use Ctrl+ Dpara sair do sqlite3).

Por exemplo, digitar .tablese pressionar Enterme fornece:

sqlite> .tables
moz_anno_attributes  moz_favicons         moz_items_annos    
moz_annos            moz_historyvisits    moz_keywords       
moz_bookmarks        moz_hosts            moz_places         
moz_bookmarks_roots  moz_inputhistory   
sqlite> 

Para visualizar o conteúdo, digite SELECT * FROM table_name;(onde table_nameé o nome da tabela que você deseja visualizar; observe ;) e pressione Enter. É bem provável que a saída não seja compreensível, mas isso não é culpa do sqlite3.

Para mostrar um exemplo que faz proporcionar uma saída decente, olhada stylish.sqlite(se você usar a extensão Stylish ):

$ ~/.mozilla/firefox/w4wcp85s.default $ sqlite3 stylish.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
style_meta  styles    
sqlite> SELECT * FROM styles;
6||||YouTube|/* AGENT_SHEET */ 
/* ▓▓ NIGHTSHIFT - eye care:                                 ▓▓
   ▓▓_http://userstyles.org/styles/18192/nightshift-eye-care_▓▓ */

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document regexp("https?://www.youtube.com/.*")  {
body,html {min-height: 100%!important; }
html, body{background-color:#111!important}

Você pode fazer tudo em apenas um comando não interativo se souber exatamente o que deseja. Leia A ferramenta de linha de comando sqlite3 para obter mais informações sobre o sqlite3.

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" > ~/Desktop/filename.txt 

fará o necessário no exemplo dado e teepermitirá que você veja a saída na tela também:

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" | tee ~/Desktop/filename.txt 

(Obrigado devido aqui .)

Comunidade
fonte
Se você deseja pesquisar todos os bancos de dados e todas as tabelas nesses bancos de dados para um termo específico (por exemplo, stackoverflow.com ), basta fazer o seguinte (como uma linha): for DATABASE in *sqlite; do echo -e "********\n$DATABASE\n********";for TABLE in $(sqlite3 $DATABASE ".tables"); do echo -e "========\n$TABLE\n========"; sqlite3 $DATABASE "select * from $TABLE;"; done; done | grep 'stackoverflow\.com'ou, em vez de grepusar lesse pesquisar nos resultados.
erik
Algo parecido com isso vai terminar no final do meu ~/.bash_historytexto, então escrevi um script Python (3.5+) usando a biblioteca Click para facilitar muito a listagem, a classificação e a filtragem básicas. Você pode obtê-lo neste Gist . Por favor, deixe comentários lá se você tiver problemas.
TheDudeAbides
6

Aqui está o que eu acabei (graças a respostas anteriores):

db=$(find "${HOME}/.mozilla/firefox/" -name "places.sqlite")
query="select p.url from moz_historyvisits as h, moz_places as p where substr(h.visit_date, 0, 11) >= strftime('%s', date('now')) and p.id == h.place_id order by h.visit_date;"
todays_urls=$(sqlite3 "${db}" "${query}")
echo "${todays_urls}" > todays_urls
pawamoy
fonte
1
Na verdade, a solução mais útil para copiar, colar e não verbosa. Obrigado.
precisa saber é o seguinte
Se você possui vários perfis do Firefox, é necessário adicionar | head -1ao findcomando.
mivk 17/03
3

No meu Xubuntu 13.10 está ligado

/home/myusername/.mozilla/firefox/nod2ejl8.default/places.sqlite

Ou você poderia

find / -name 'places.sqlite

Como é um arquivo * .sqlite , você pode instalar este plug - in do vim e usar o vim , procurar uma maneira de abrir um arquivo sqlite no terminal. Mais informações podem ser encontradas aqui .

Lynob
fonte
1
~/.mozilla/firefox/*.default/places.sqlitedeve funcionar
mchid