ฉันสามารถดูประวัติ Firefox ด้วยเทอร์มินัลได้หรือไม่


28

มีคำสั่งให้แสดงประวัติ Firefox จากเทอร์มินัลหรือไม่

โดยไม่จำเป็นต้องป้อนประวัติ Firefox แบบกราฟิก


คุณสามารถเพิ่มเหตุผลที่ต้องการทำเช่นนั้นได้หรือไม่?

ทำไมคุณไม่ต้องการใช้ Firefox เอง

1
@ user25656: หากคุณต้องการความรวดเร็วให้ใช้บรรทัดคำสั่ง คุณสามารถทำสถิติออกมาได้ คุณสามารถค้นหาด้วยนิพจน์ทั่วไป (เช่นการใช้grep) คุณสามารถสร้างกราฟและอื่น ๆ ทุกอย่างที่เป็นไปไม่ได้ใน Firefox อย่างน้อยก็ไม่ต้องไม่แฮ็กแอดออน
erik

คำตอบ:


27

หน้านี้จะอธิบายว่า Firefox เก็บข้อมูลเฉพาะของผู้ใช้ไว้ที่ใด (และนี่คือสิ่งที่ Mozilla ช่วยบอกได้เมื่อดูไฟล์. sqlite)

มันแสดงรายการประวัติสามประเภท:

  • บุ๊กมาร์กและประวัติการเข้าชม: ไฟล์places.sqliteมีบุ๊กมาร์ก Firefox ของคุณทั้งหมดและรายการเว็บไซต์ทั้งหมดที่คุณเคยเยี่ยมชม ...

  • ประวัติการเติมข้อความอัตโนมัติ: ไฟล์formhistory.sqliteจดจำสิ่งที่คุณค้นหาในแถบค้นหา Firefox และข้อมูลที่คุณป้อนลงในแบบฟอร์มบนเว็บไซต์ ...

  • ประวัติการดาวน์โหลด: ไฟล์download.sqliteจะจดจำสิ่งที่คุณดาวน์โหลด ...

อย่างที่คุณเห็นประวัติทั้งสามนั้นไม่ใช่ไฟล์ข้อความธรรมดา แต่เป็นไฟล์ฐานข้อมูลในsqliteรูปแบบ

วิธีหนึ่งในการดู.sqliteไฟล์คือการใช้sqlite3( sudo apt-get install sqlite3)

เปิดเทอร์มินัลและcdไปยังโฟลเดอร์ที่มีสิ่งที่คุณต้องการดู ~/.mozilla/firefox/w4wcp85s.defaultในกรณีของฉันที่เป็น

ls *.sqlite แสดงรายการไฟล์ sqlite

เรียกใช้sqlite3 places.sqlite(หาก places.sqlite เป็นสิ่งที่คุณต้องการดู) คุณจะเห็นสิ่งนี้:

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

ตอนนี้มีหลายสิ่งที่คุณสามารถทำได้ (ใช้Ctrl+ Dเพื่อออกจาก sqlite3)

ตัวอย่างเช่นการพิมพ์.tablesและการกดEnterให้ฉัน:

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> 

เพื่อดูเนื้อหาชนิดSELECT * FROM table_name;(ซึ่งtable_nameเป็นชื่อของตารางที่คุณต้องการที่จะดู; ทราบ;) Enterและกด มีโอกาสมากที่ผลลัพธ์จะไม่สามารถเข้าใจได้ แต่นั่นไม่ใช่ความผิดของ sqlite3

แสดงตัวอย่างที่ไม่ให้ผลผลิตที่ดีดูที่stylish.sqlite(ถ้าคุณใช้ส่วนขยายที่ทันสมัย ):

$ ~/.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}

คุณสามารถทำทุกอย่างด้วยคำสั่งที่ไม่มีการโต้ตอบเพียงคำสั่งเดียวหากคุณรู้ว่าคุณต้องการอะไร อ่านเครื่องมือบรรทัดคำสั่ง sqlite3สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ sqlite3

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

จะทำสิ่งที่จำเป็นในตัวอย่างที่กำหนดและteeจะช่วยให้คุณเห็นผลลัพธ์บนหน้าจอเช่นกัน:

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

(ขอบคุณที่นี่ )


หากคุณต้องการค้นหาฐานข้อมูลทั้งหมดและตารางทั้งหมดในฐานข้อมูลนั้นเพื่อค้นหาคำที่เฉพาะเจาะจง (เช่น. stackoverflow.com ) คุณสามารถทำได้ (เป็นหนึ่งซับ): 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'หรือแทนที่จะgrepใช้lessและค้นหาภายในผลลัพธ์
erik

บางอย่างเช่นนี้กำลังจะหมดไปจากจุดสิ้นสุดของฉัน~/.bash_historyดังนั้นฉันจึงเขียนสคริปต์ Python (3.5+) โดยใช้ห้องสมุดคลิกเพื่อสร้างรายการพื้นฐานการเรียงลำดับและการกรองได้ง่ายขึ้นมาก คุณสามารถรับได้จากส่วนสำคัญนี้ กรุณาแสดงความคิดเห็นที่นั่นหากคุณพบปัญหา
TheDudeAbides

6

นี่คือสิ่งที่ฉันลงเอยด้วย (ขอบคุณคำตอบก่อนหน้า):

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

1
ที่จริงแล้วเป็นทางออกที่มีประโยชน์ที่สุดคัดลอกวางไม่ใช่ verbose ขอบคุณ
vmassuchetto

หากคุณมีโปรไฟล์ Firefox หลายโปรไฟล์คุณจะต้องเพิ่มลง| head -1ในfindคำสั่ง
mivk

3

ในXubuntu 13.10ของฉันเปิดอยู่

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

หรือคุณสามารถ

find / -name 'places.sqlite

เนื่องจากเป็นไฟล์* .sqliteคุณสามารถติดตั้งปลั๊กอิน vimนี้และใช้vimค้นหาวิธีเปิดไฟล์sqliteจากเทอร์มินัล ข้อมูลเพิ่มเติมสามารถพบได้ที่นี่


1
~/.mozilla/firefox/*.default/places.sqliteควรทำงาน
mchid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.