Как экспортировать историю браузера в CSV для аналитики

Нужно проанализировать, куда вы реально тратите время в интернете, но все сервисы предлагают выгрузку в каком-то своём формате. CSV — это таблица, которую можно открыть где угодно: в Excel, Google Sheets, Notion или загрузить в любую BI-систему. Проблема в том, что браузеры не дают кнопку «экспортировать историю в CSV» из коробки. Есть несколько путей — от ручного копирования базы до готовых утилит. Разберём, что реально работает.

Где браузеры хранят историю

Это важно понимать, потому что от этого зависит весь процесс экспорта. История браузера — это обычная база данных. В каждом популярном браузере своя структура и свой формат хранения:

  • Chrome и Chromium-браузеры (Brave, Edge, Opera) хранят историю в файле SQLite под названием history. Путь в Windows: %LocalAppData%GoogleChromeUser DataDefault, в macOS: ~/Library/Application Support/Google/Chrome/Default.
  • Firefox использует базу places.sqlite, которая находится в профиле пользователя. Путь: %AppData%MozillaFirefoxProfiles (Windows) или ~/Library/Application Support/Firefox/Profiles (macOS).
  • Safari на macOS хранит историю в файле History.db по пути ~/Library/Safari/.

Все эти базы — стандартный SQLite. В них есть таблицы с URL, заголовками страниц, временными метками посещений и количеством открытий. Именно эти данные нам и нужно вытащить в CSV.

Самый простой способ: расширения для экспорта

Если вы не хотите возиться с кодом и базами данных, проще всего использовать готовое расширение. Важный момент: такие расширения предоставляют именно CSV-файл, который потом можно сразу открыть в табличном редакторе.

Chrome History Export — небольшое расширение, которое добавляет кнопку в историю браузера. После клика скачивается CSV с колонками: URL, заголовок, дата и время посещения, количество визитов. Файл не уходит в облако разработчикам — всё работает локально.

History Trends Unlimited — ещё одно расширение, которое позволяет делать экспорт за выбранный период в CSV. Плюс в том, что оно умеет отдавать данные с разбивкой по дням и категориям доменов, что удобно для аналитики.

Минус этого подхода — расширение должно быть установлено до того, как вы начнёте вести историю. Если нужно выгрузить давние данные, которым несколько лет, расширение их не увидит.

Ручной экспорт через SQLite: пошаговая инструкция

Этот метод даёт полный контроль над тем, что именно попадает в CSV. Вам понадобится любой инструмент для работы с SQLite — DB Browser for SQLite (бесплатный, с интерфейсом) или консольная утилита sqlite3.

Шаг 1. Закройте браузер

Это критически важно. Пока браузер запущен, база заблокирована, и вы либо не откроете её, либо получите повреждённую копию. Закройте все окна Chrome/Edge/Firefox и убедитесь, что процесс не висит в диспетчере задач.

Шаг 2. Сделайте копию файла истории

Никогда не работайте с оригинальным файлом напрямую. Скопируйте его в любую папку на рабочем столе. Если что-то пойдёт не так, вы всегда сможете вернуться к оригиналу.

Шаг 3. Откройте копию в DB Browser for SQLite

Запустите программу, нажмите «Open Database» и выберите скопированный файл. Вы увидите структуру таблиц. В Chrome основная таблица называется urls (здесь хранятся URL и заголовки) и visits (здесь — временные метки и ссылки на URL).

Шаг 4. Выполните SQL-запрос

Перейдите во вкладку «Execute SQL» и вставьте запрос:

SELECT u.url, u.title, datetime(v.visit_time/1000000-11644473600, 'unixepoch') AS visit_date, v.visit_count
FROM urls u
JOIN visits v ON u.id = v.url
ORDER BY v.visit_time DESC;

Что здесь происходит:

  • visit_time в Chrome хранится в формате «микросекунды с 1601 года» — специфичный формат Windows. Делим на миллион и вычитаем смещение, чтобы получить привычную дату.
  • JOIN объединяет таблицу адресов и таблицу посещений, чтобы получить и URL, и заголовок, и время.
  • ORDER BY DESC сортирует от новых записей к старым.

Шаг 5. Экспортируйте результат

В DB Browser есть кнопка «Export» → «Table as CSV file». Выберите полученный результат, укажите путь и имя файла. Готово — у вас есть чистый CSV, который открывается в Google Sheets или Excel.

Экспорт из Firefox

В Firefox структура базы немного другая. Основная таблица — moz_places, она содержит URL, заголовки и даты в более понятном формате (миллисекунды с Unix-эпохи). Запрос выглядит так:

SELECT p.url, p.title, datetime(p.last_visit_date/1000000, 'unixepoch') AS visit_date, p.visit_count
FROM moz_places p
WHERE p.last_visit_date IS NOT NULL
ORDER BY p.last_visit_date DESC;

Принцип тот же: открываем базу инструментом, выполняем запрос, сохраняем результат как CSV.

Сравнение подходов

Способ Сложность Ги Качество CSV Подходит для автоматизации
Расширения для браузера Минимальная Низкая — только то, что предлагает расширение Готовый файл, без лишних колонок Нет
DB Browser + SQL-запрос Средняя Высокая — можно выбрать любые поля и фильтры Полный контроль над содержимым Частично
Скрипт на Python Выше средней Максимальная Любая структура и фильтрация Да, полностью

Если нужна автоматизация: скрипт на Python

Когда вы регулярно делаете такую выгрузку (например, раз в месяц для анализа интернет-привычк), ручной способ надоедает. Скрипт на Python решает задачу раз и навсегда. Он автоматически находит базу браузера в системе, читает её и кладёт готовый CSV в нужную папку.

Минимальный пример для Chrome:

import sqlite3
import shutil
import csv
import os
from datetime import datetime, timedelta

# Определяем путь к базе Chrome в зависимости от ОС
db_path_local = os.path.expanduser("~/Library/Application Support/Google/Chrome/Default/history")  # macOS
db_path_win = os.path.expanduser("~\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\history")  # Windows

db_path = db_path_local if os.path.exists(db_path_local) else db_path_win

# Копируем базу, чтобы не блокировать оригинал
temp_db = "/tmp/chrome_history_copy.db"
shutil.copy2(db_path, temp_db)

conn = sqlite3.connect(temp_db)
cursor = conn.cursor()

# Запрос на получение истории
query = """
SELECT u.url, u.title, datetime(v.visit_time/1000000-11644473600, 'unixepoch') AS visit_date
FROM urls u
JOIN visits v ON u.id = v.url
ORDER BY v.visit_time DESC
"""

cursor.execute(query)
rows = cursor.fetchall()

# Записывем в CSV
output_file = "browser_history.csv"
with open(output_file, "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["URL", "Title", "Visit Date"])
    writer.writerows(rows)

conn.close()
os.remove(temp_db)
print(f"Экспортировано {len(rows)} записей в {output_file}")

Этот скрипт можно запускать по расписанию через cron (macOS/Linux) или Планировщик задач (Windows). Он сам найдёт базу, прочитает её и создаст свежий CSV.

Что выбрать в зависимости от вашей ситуации

Нужно один раз выгрузить историю для себя? — установите расширение Chrome History Export. Пять минут на установку, клик — и файл на рабочем столе.

Хотите выгрузить только определённый период или отфильтровать по доменам? — используйте DB Browser for SQLite с SQL-запросом. Можно добавить условие WHERE u.url LIKE '%example.com%' и получить историю только по нужному сайту.

Делаете такой экспорт регулярно для аналитики? — напишите скрипт на Python и поставьте на расписание. Это займёт час настройки, но дальше работает без участия.

Работаете с корпоративных компьютеров с ограничениями? — расширения могут быть заблокированы политикой компании. В этом случае путь через SQLite-базу с флешки ( Portable-версия DB Browser) — единственный рабочий вариант.

Частые ошибки при экспорте

Работа с открытым браузером. Самая распространённая ошибка. Пока Chrome запущен, файл history заблокирован операционной системой. Результат — либо ошибка доступа, либо повреждённая база. Всегда закрывайте браузер и работайте с копией.

Неправильный перевод времени. Chrome хранит время в микросекундах от 1 января 1601 года. Если забыть про деление и смещение, в CSV попадут даты вроде «30058 год». Формула visit_time/1000000-11644473600 решает эту проблему.

Кодировка UTF-8. Если в истории есть страницы с нелатинскими заголовками (китайский, арабский, русский), CSV без указания UTF-8 может открыться «кракозябрами». Всегда явно указывайте кодировку при экспорте.

Установка расширений из непроверенных источников. Расширение с доступом к истории браузера технически может отправить все ваши данные на сервер разработчика. Проверяйте отзывы, количество установок и запрашиваемые разрешения перед установкой.

Как подготовить CSV для аналитики

Сырой CSV с историей — это просто список посещений. Чтобы извлечь из него пользу, стоит сделать несколько шагов по обработке:

  1. Удалите дубликаты. Одна и та же страница могла быть открыта десятков раз. Для аналитики интересны уникальные визиты, а не общее количество.
  2. Извлеките домены. Добавьте колонку с доменами из URL. В Excel или Google Sheets это делается формулой, в Python — библиотекой urllib.parse. Так вы сгруппируете визиты по сайтам.
  3. Разбейте по часам и дням. Добавьте колонки «час», «день недели», «месяц». Это позволит увидеть паттерны: например, что вы больше всего отвлекаетесь в 11 утра или что по пятницам время в соцсетях удваивается.
  4. Отфильтруйте технические URL. Удалите записи типа chrome://settings, about:blank и внутренние страницы браузера. Они зашумляют данные.

После такой обработки CSV превращается в полноценный датасет для анализа. Его можно загрузить в Google Sheets и построить сводные таблицы, визуализировать в Power BI или Metabase, или просто отсортировать по количеству визитов, чтобы увидеть свои главные «точки притяжения» в интернете.

Итог

Экспорт истории браузера в CSV — задача с несколькими решениями под разные уровни технической подготовки. Расширения дают быстрый результат без глубоких знаний, работа с SQLite через DB Browser даёт полный контроль над содержимым CSV, а Python-скрипт закрывает потребность в регулярной автоматической выгрузке.

Главное — всегда работать с копией базы, а не с оригиналом, и не забывать про специфику формата времени в Chrome. Если вы делаете это впервые — начните с расширения, а когда поймёте, какие именно данные вам нужны, переходите к SQL-запросам для точечной настройки выгрузки.

Dfncfg.ru