Программный доступ к истории браузера

как я могу создать приложение для чтения всей истории моего браузера (firefox)? я заметил, что у меня в

C: \ Users \ имя_пользователя \ AppData \ Local \ Mozilla \ Firefox \ Profiles \ 646vwtnu.default

что выглядит как база данных sqlite (urlclassifier3.sqlite), но я не знаю, действительно ли это то, что используется для хранения информации об истории. Я искал примеры, как это сделать, но ничего не нашел.

ps: хотя название похоже, я считаю, что этот вопрос не совпадает с "Как получить доступ к истории браузера?"

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
7 447
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я считаю, что places.sqlite - это то, что вам нужно в поисках истории (Firefox 3). Ниже приведены несколько вики-статей Mozilla, которые содержат некоторую информацию по этой теме.

В более ранних версиях Firefox они сохраняли историю в файле history.dat, который был закодирован в формате «Mork». Этот Perl-скрипт от Джейми Завински можно использовать для анализа файлов Mork.

Мне также показались интересными следующие ссылки:

После добавления ссылки на System.Data.Sqlite в мой проект .Net все, что мне нужно было сделать для создания соединения, это:

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

У меня был один незначительный сбой: провайдер .net sqlite не поддерживает sqlite3_enable_shared_cache, который, как я считаю, мешает мне открыть базу данных places.sqlite при запущенном firefox (см. Поддержка sqlite3_enable_shared_cache)

Дополнение Firefox SQLite Manager - отличный инструмент. Если вы хотите узнать о дизайне Firefox Places и схеме БД, посетите Mozilla Places.

Действительно, история находится в 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

Вот результат, одна интересная таблица - moz_places в строке 2:

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);

Другие вопросы по теме