Нужно проанализировать, куда вы реально тратите время в интернете, но все сервисы предлагают выгрузку в каком-то своём формате. CSV — это таблица, которую можно открыть где угодно: в Excel, Google Sheets, Notion или загрузить в любую BI-систему. Проблема в том, что браузеры не дают кнопку «экспортировать историю в CSV» из коробки. Есть несколько путей — от ручного копирования базы до готовых утилит. Разберём, что реально работает.
- Где браузеры хранят историю
- Самый простой способ: расширения для экспорта
- Ручной экспорт через SQLite: пошаговая инструкция
- Шаг 1. Закройте браузер
- Шаг 2. Сделайте копию файла истории
- Шаг 3. Откройте копию в DB Browser for SQLite
- Шаг 4. Выполните SQL-запрос
- Шаг 5. Экспортируйте результат
- Экспорт из Firefox
- Сравнение подходов
- Если нужна автоматизация: скрипт на Python
- Что выбрать в зависимости от вашей ситуации
- Частые ошибки при экспорте
- Как подготовить 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 с историей — это просто список посещений. Чтобы извлечь из него пользу, стоит сделать несколько шагов по обработке:
- Удалите дубликаты. Одна и та же страница могла быть открыта десятков раз. Для аналитики интересны уникальные визиты, а не общее количество.
- Извлеките домены. Добавьте колонку с доменами из URL. В Excel или Google Sheets это делается формулой, в Python — библиотекой
urllib.parse. Так вы сгруппируете визиты по сайтам. - Разбейте по часам и дням. Добавьте колонки «час», «день недели», «месяц». Это позволит увидеть паттерны: например, что вы больше всего отвлекаетесь в 11 утра или что по пятницам время в соцсетях удваивается.
- Отфильтруйте технические URL. Удалите записи типа
chrome://settings,about:blankи внутренние страницы браузера. Они зашумляют данные.
После такой обработки CSV превращается в полноценный датасет для анализа. Его можно загрузить в Google Sheets и построить сводные таблицы, визуализировать в Power BI или Metabase, или просто отсортировать по количеству визитов, чтобы увидеть свои главные «точки притяжения» в интернете.
Итог
Экспорт истории браузера в CSV — задача с несколькими решениями под разные уровни технической подготовки. Расширения дают быстрый результат без глубоких знаний, работа с SQLite через DB Browser даёт полный контроль над содержимым CSV, а Python-скрипт закрывает потребность в регулярной автоматической выгрузке.
Главное — всегда работать с копией базы, а не с оригиналом, и не забывать про специфику формата времени в Chrome. Если вы делаете это впервые — начните с расширения, а когда поймёте, какие именно данные вам нужны, переходите к SQL-запросам для точечной настройки выгрузки.
