【问题标题】:Programmatically access browser history以编程方式访问浏览器历史记录
【发布时间】:2010-09-08 09:59:51
【问题描述】:

如何创建一个应用程序来读取我的所有浏览器 (firefox) 历史记录? 我注意到我在

C:\Users\user.name\AppData\Local\Mozilla\Firefox\Profiles\646vwtnu.default

看起来像一个 sqlite 数据库 (urlclassifier3.sqlite) 但我不知道它是否真的用于存储历史信息。 我搜索了有关如何执行此操作的示例,但没有找到任何内容。

ps:虽然标题相似,但我相信这个问题与"How do you access browser history?"不一样

【问题讨论】:

    标签: firefox sqlite


    【解决方案1】:

    我相信places.sqlite 是您应该研究历史的那个(Firefox 3)。以下是一些 Mozilla wiki 条目,其中包含有关该主题的一些信息。

    在早期版本的 Firefox 中,他们将历史记录存储在一个名为 history.dat 的文件中,该文件以一种名为“Mork”的格式编码。 This perl script by Jamie Zawinski 可用于解析 Mork 文件。

    【讨论】:

      【解决方案2】:

      我还发现以下链接很有趣:

      在我的 .Net 项目中添加对 System.Data.Sqlite 的引用后,创建连接所需要做的就是:

      cnn = New SQLiteConnection("data source=c:\Users\user.name\AppData\Roaming\Mozilla\Firefox\Profiles\646vwtnu.default\places.sqlite")
      cnn.Open()
      

      我有一个小故障,.net sqlite 提供程序不支持 sqlite3_enable_shared_cache,我认为这会阻止我在运行 firefox 时打开 places.sqlite 数据库(请参阅Support for sqlite3_enable_shared_cache)

      【讨论】:

        【解决方案3】:

        Firefox SQLite Manager Addon 是一个很棒的工具。如果您想了解 Firefox Places 设计和数据库架构,请访问Mozilla Places

        【讨论】:

          【解决方案4】:

          确实历史记录在places.sqlite 中,但数据库文件被锁定。所以你需要制作一个副本才能访问它:

          $ pwd
          /home/amirouche/.mozilla/firefox/p4x432.default
          $ ls -l *sqlite
          -rw-r--r-- 1 amirouche amirouche   229376 Oct  4 12:39 content-prefs.sqlite
          -rw-r--r-- 1 amirouche amirouche  1572864 Oct  4 12:51 cookies.sqlite
          -rw-r--r-- 1 amirouche amirouche 40501248 Oct  4 12:47 favicons.sqlite
          -rw-r--r-- 1 amirouche amirouche   294912 Oct  4 12:46 formhistory.sqlite
          -rw-r--r-- 1 amirouche amirouche   196608 Oct  4 12:50 permissions.sqlite
          -rw-r--r-- 1 amirouche amirouche 36700160 Oct  4 12:50 places.sqlite
          -rw-r--r-- 1 amirouche amirouche    65536 Oct  4 11:50 protections.sqlite
          -rw-r--r-- 1 amirouche amirouche      512 Jul 24 23:41 storage.sqlite
          -rw-r--r-- 1 amirouche amirouche   131072 Oct  4 12:05 storage-sync.sqlite
          -rw-r--r-- 1 amirouche amirouche 15892480 Oct  4 12:51 webappsstore.sqlite
          
          $ sqlite3 places.sqlite 
          SQLite version 3.27.2 2019-02-25 16:06:06
          Enter ".help" for usage hints.
          sqlite> .schema
          Error: database is locked
          sqlite> 
          
          $ cp places.sqlite places.backup.sqlite
          
          $ sqlite3 places.backup.sqlite 
          SQLite version 3.27.2 2019-02-25 16:06:06
          Enter ".help" for usage hints.
          sqlite> .schema
          

          这是输出,一个有趣的表是第 2 行的moz_places

          CREATE TABLE moz_origins ( id INTEGER PRIMARY KEY, prefix TEXT NOT NULL, host TEXT NOT NULL, frecency INTEGER NOT NULL, UNIQUE (prefix, host) );
          CREATE TABLE moz_places (   id INTEGER PRIMARY KEY, url LONGVARCHAR, title LONGVARCHAR, rev_host LONGVARCHAR, visit_count INTEGER DEFAULT 0, hidden INTEGER DEFAULT 0 NOT NULL, typed INTEGER DEFAULT 0 NOT NULL, frecency INTEGER DEFAULT -1 NOT NULL, last_visit_date INTEGER , guid TEXT, foreign_count INTEGER DEFAULT 0 NOT NULL, url_hash INTEGER DEFAULT 0 NOT NULL , description TEXT, preview_image_url TEXT, origin_id INTEGER REFERENCES moz_origins(id));
          CREATE TABLE moz_historyvisits (  id INTEGER PRIMARY KEY, from_visit INTEGER, place_id INTEGER, visit_date INTEGER, visit_type INTEGER, session INTEGER);
          CREATE TABLE moz_inputhistory (  place_id INTEGER NOT NULL, input LONGVARCHAR NOT NULL, use_count INTEGER, PRIMARY KEY (place_id, input));
          CREATE TABLE moz_bookmarks (  id INTEGER PRIMARY KEY, type INTEGER, fk INTEGER DEFAULT NULL, parent INTEGER, position INTEGER, title LONGVARCHAR, keyword_id INTEGER, folder_type TEXT, dateAdded INTEGER, lastModified INTEGER, guid TEXT, syncStatus INTEGER NOT NULL DEFAULT 0, syncChangeCounter INTEGER NOT NULL DEFAULT 1);
          CREATE TABLE moz_bookmarks_deleted (  guid TEXT PRIMARY KEY, dateRemoved INTEGER NOT NULL DEFAULT 0);
          CREATE TABLE moz_keywords (  id INTEGER PRIMARY KEY AUTOINCREMENT, keyword TEXT UNIQUE, place_id INTEGER, post_data TEXT);
          CREATE TABLE sqlite_sequence(name,seq);
          CREATE TABLE moz_anno_attributes (  id INTEGER PRIMARY KEY, name VARCHAR(32) UNIQUE NOT NULL);
          CREATE TABLE moz_annos (  id INTEGER PRIMARY KEY, place_id INTEGER NOT NULL, anno_attribute_id INTEGER, content LONGVARCHAR, flags INTEGER DEFAULT 0, expiration INTEGER DEFAULT 0, type INTEGER DEFAULT 0, dateAdded INTEGER DEFAULT 0, lastModified INTEGER DEFAULT 0);
          CREATE TABLE moz_items_annos (  id INTEGER PRIMARY KEY, item_id INTEGER NOT NULL, anno_attribute_id INTEGER, content LONGVARCHAR, flags INTEGER DEFAULT 0, expiration INTEGER DEFAULT 0, type INTEGER DEFAULT 0, dateAdded INTEGER DEFAULT 0, lastModified INTEGER DEFAULT 0);
          CREATE TABLE moz_meta (key TEXT PRIMARY KEY, value NOT NULL) WITHOUT ROWID ;
          CREATE TABLE sqlite_stat1(tbl,idx,stat);
          CREATE INDEX moz_places_url_hashindex ON moz_places (url_hash);
          CREATE INDEX moz_places_hostindex ON moz_places (rev_host);
          CREATE INDEX moz_places_visitcount ON moz_places (visit_count);
          CREATE INDEX moz_places_frecencyindex ON moz_places (frecency);
          CREATE INDEX moz_places_lastvisitdateindex ON moz_places (last_visit_date);
          CREATE UNIQUE INDEX moz_places_guid_uniqueindex ON moz_places (guid);
          CREATE INDEX moz_places_originidindex ON moz_places (origin_id);
          CREATE INDEX moz_historyvisits_placedateindex ON moz_historyvisits (place_id, visit_date);
          CREATE INDEX moz_historyvisits_fromindex ON moz_historyvisits (from_visit);
          CREATE INDEX moz_historyvisits_dateindex ON moz_historyvisits (visit_date);
          CREATE INDEX moz_bookmarks_itemindex ON moz_bookmarks (fk, type);
          CREATE INDEX moz_bookmarks_parentindex ON moz_bookmarks (parent, position);
          CREATE INDEX moz_bookmarks_itemlastmodifiedindex ON moz_bookmarks (fk, lastModified);
          CREATE INDEX moz_bookmarks_dateaddedindex ON moz_bookmarks (dateAdded);
          CREATE UNIQUE INDEX moz_bookmarks_guid_uniqueindex ON moz_bookmarks (guid);
          CREATE UNIQUE INDEX moz_keywords_placepostdata_uniqueindex ON moz_keywords (place_id, post_data);
          CREATE UNIQUE INDEX moz_annos_placeattributeindex ON moz_annos (place_id, anno_attribute_id);
          CREATE UNIQUE INDEX moz_items_annos_itemattributeindex ON moz_items_annos (item_id, anno_attribute_id);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-16
            • 2013-05-21
            • 2012-01-26
            • 2015-08-31
            相关资源
            最近更新 更多