Czy mogę przeglądać historię Firefoksa za pomocą terminala?

29

Czy istnieje polecenie wyświetlania historii Firefoksa z terminala?

bez konieczności graficznego wprowadzania historii przeglądarki Firefox.

nux
źródło
Czy możesz podać powód, dla którego chcesz to zrobić?
Dlaczego nie chcesz korzystać z samego Firefoksa?
1
@ user25656: Jeśli chcesz być szybki, użyj wiersza poleceń. Możesz z tego tworzyć statystyki. Możesz wyszukiwać za pomocą wyrażeń regularnych (np. Używając grep), możesz tworzyć wykresy itp. W Firefoksie wszystko nie jest możliwe. Przynajmniej nie bez zhakowania dodatku.
erik

Odpowiedzi:

28

Ta strona opisuje, jakie informacje specyficzne dla użytkownika są przechowywane przez Firefox i gdzie. (I to właśnie ma do powiedzenia pomoc Mozilli podczas przeglądania plików .sqlite.)

Wymienia trzy typy historii:

  • Zakładki i historia przeglądania: plik places.sqlite zawiera wszystkie zakładki Firefoksa oraz listę wszystkich stron, które odwiedziłeś ...

  • Historia autouzupełniania: plik formhistory.sqlite zapamiętuje to, czego szukałeś w pasku wyszukiwania Firefox i jakie informacje wprowadziłeś do formularzy na stronach internetowych ...

  • Historia pobierania: plik downloads.sqlite pamięta, co pobrałeś. ...

Jak widać, wszystkie trzy historie nie są prostymi plikami tekstowymi, ale plikami bazy danych w sqliteformacie.

Jednym ze sposobów przeglądania .sqliteplików jest użycie sqlite3( sudo apt-get install sqlite3).

Otwórz terminal i cdfolder zawierający to, co chcesz wyświetlić. Tak jest w moim przypadku ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite wyświetla listę plików sqlite.

Uruchom sqlite3 places.sqlite(jeśli places.sqlite jest tym, co chcesz wyświetlić). Zobaczysz coś takiego:

$ 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> 

Teraz możesz zrobić kilka rzeczy. (Użyj Ctrl+, Daby wyjść z sqlite3).

Na przykład pisanie .tablesi naciskanie Enterdaje mi:

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> 

Aby wyświetlić zawartość, wpisz SELECT * FROM table_name;(gdzie table_namejest nazwa tabeli, którą chcesz wyświetlić; zwróć uwagę na ;) i naciśnij Enter. Jest całkiem prawdopodobne, że dane wyjściowe nie będą zrozumiałe, ale nie jest to wina sqlite3.

Aby pokazać przykład, który zapewnia przyzwoitą wydajność, spójrz na stylish.sqlite(jeśli używasz rozszerzenia 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}

Możesz zrobić wszystko za pomocą jednego nieinteraktywnego polecenia, jeśli wiesz dokładnie, czego chcesz. Przeczytaj narzędzie wiersza polecenia sqlite3, aby uzyskać więcej informacji na temat sqlite3.

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

zrobi to, co potrzebne w podanym przykładzie i teepozwoli ci zobaczyć również wynik na ekranie:

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

(Dzięki tutaj .)

Społeczność
źródło
Jeśli chcesz przeszukać wszystkie bazy danych i wszystkie tabele w tych bazach danych pod kątem określonego terminu (np. Stackoverflow.com ), możesz po prostu zrobić (jako jeden wiersz): 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'Lub zamiast grepużywać lessi przeszukiwać wyniki.
erik
Coś takiego po prostu zejdzie mi z głowy ~/.bash_history, więc napisałem skrypt Pythona (3.5+) za pomocą biblioteki Click, aby znacznie ułatwić podstawową listę, sortowanie i filtrowanie. Możesz go zdobyć z tej Gist . Jeśli napotkasz problemy, zostaw tam komentarze.
TheDudeAbides
6

Oto, z czym skończyłem (dzięki poprzednim odpowiedziom):

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
źródło
1
W rzeczywistości najbardziej przydatne rozwiązanie kopiuj-wklej-nie-pełne. Dzięki.
vmassuchetto
Jeśli masz kilka profili Firefoksa, musisz dodać | head -1do findpolecenia.
mivk
3

Na moim Xubuntu 13.10 jest włączony

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

Lub mógłbyś

find / -name 'places.sqlite

Ponieważ jest to plik * .sqlite , możesz zainstalować tę wtyczkę vim i użyć vim , poszukaj sposobu na otwarcie pliku sqlite z terminala. Więcej informacji można znaleźć tutaj .

Lynob
źródło
1
~/.mozilla/firefox/*.default/places.sqlitepowinien działać
mchid