Внедрение закладок: предзаполнение в браузере
Как программно предзаполнять закладки браузера для создания полноценных, реалистичных идентичностей в автоматизированных рабочих процессах.
Нужна поддерживаемая продуктовая документация?
У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.
Введение
Реальный браузер несёт в себе историю. У него есть закладки, сохранённые за недели и месяцы, организованные в папки, отражающие интересы и привычки пользователя. Когда вы запускаете свежий экземпляр браузера для автоматизации или исследований приватности, пустая панель закладок является одним из многих сигналов, отличающих его от браузера с реальной историей использования. Закладки - часть более широкого слоя идентичности, который делает сессию браузера похожей на используемую, а не только что созданную.
BotBrowser предоставляет флаг --bot-bookmarks для предзаполнения панели закладок при запуске экземпляра браузера. Это позволяет создавать сессии с реалистичными данными закладок с самой первой загрузки страницы. В сочетании с другими флагами идентичности, такими как --bot-cookies и --bot-inject-random-history, закладки вносят вклад в полную идентичность браузера, согласованную на всех уровнях.
Влияние на приватность: почему закладки важны
Системы отслеживания собирают множество сигналов для построения профиля браузера. Хотя cookie и отпечатки обсуждаются чаще всего, поведенческие сигналы и сигналы состояния тоже играют роль. Наличие или отсутствие закладок, количество записей в истории просмотров и состояние панели закладок - всё это вносит вклад в общую картину сессии браузера.
Для исследователей приватности контроль состояния закладок важен для воспроизводимых экспериментов. Если вы тестируете, ведёт ли система отслеживания себя по-разному для новых и возвращающихся посетителей, нужно контролировать каждый аспект состояния браузера, включая закладки. Для управления несколькими аккаунтами каждая идентичность выигрывает от уникального набора закладок, соответствующего остальному профилю: немецкоязычный профиль должен иметь немецкие закладки, профиль разработчика - технические закладки и т.д.
Пустые панели закладок также являются практической проблемой. Некоторые рабочие процессы требуют взаимодействия с элементами UI, связанными с закладками, или тестирования реакции сайтов на API chrome.bookmarks. Предзаполнение закладок обеспечивает реалистичную отправную точку для этих сценариев.
Техническая основа
Как Chromium хранит закладки
Chromium хранит закладки в JSON-файле Bookmarks внутри директории пользовательских данных, конкретно в папке профиля (например, Default/Bookmarks). Файл содержит древовидную структуру с двумя корневыми узлами: bookmark_bar (видимый на панели закладок) и other (папка "Другие закладки").
Каждая запись закладки имеет следующие свойства:
- name/title: отображаемый текст на панели закладок или в менеджере
- url: целевой URL для закладок URL-типа
- type:
urlдля закладки илиfolderдля папки с дочерними элементами - children: массив вложенных закладок и папок (для записей типа folder)
- date_added: временная метка создания закладки
Видимость закладок
Закладки отображаются в нескольких местах браузера:
- Панель закладок: наиболее видимое расположение, под адресной строкой
- Менеджер закладок: доступен через
chrome://bookmarks - Страница новой вкладки: некоторые конфигурации показывают часто добавляемые в закладки сайты
- Подсказки омнибокса: адресная строка может предлагать URL закладок при вводе
Предзаполнение закладок через --bot-bookmarks гарантирует их появление во всех этих местах.
Распространённые подходы и их ограничения
Ручное редактирование файла закладок
Можно создать директорию пользовательских данных, вручную создать или отредактировать JSON-файл Bookmarks, а затем запустить браузер с этой директорией. Это работает, но имеет недостатки:
- Формат файла
Bookmarksвключает поля метаданных (GUID, временные метки во внутреннем формате Chromium), которые должны быть корректными - Нужно управлять директориями пользовательских данных явно
- Нет чёткого разделения между данными закладок и другим сохранённым состоянием
Использование API chrome.bookmarks
API chrome.bookmarks позволяет создавать закладки программно, но доступен только расширениям браузера. Это означает необходимость установки расширения, что добавляет сложность и обнаружимый сигнал.
Подходы на уровне фреймворков
Ни Playwright, ни Puppeteer не предоставляют нативный API закладок. Единственный встроенный способ - навигация на chrome://bookmarks и взаимодействие с UI, что медленно и хрупко.
Подход BotBrowser
BotBrowser обрабатывает предзаполнение закладок на уровне движка через флаг --bot-bookmarks.
Наполнение на уровне движка
При передаче --bot-bookmarks BotBrowser заполняет хранилище закладок во время инициализации браузера, до загрузки страниц и до создания контекста. Закладки сразу доступны в панели закладок, менеджере и подсказках омнибокса.
Формат JSON
--bot-bookmarks='[{"title":"Google","type":"url","url":"https://www.google.com"},{"title":"News","type":"folder","children":[{"title":"BBC","type":"url","url":"https://www.bbc.com"},{"title":"Reuters","type":"url","url":"https://www.reuters.com"}]}]'
Структура поддерживает:
- URL-закладки: объекты с
title,type: "url"иurl - Папки: объекты с
title,type: "folder"и массивомchildren - Неограниченная вложенность: папки могут содержать другие папки на любую глубину
Без расширений
Поскольку наполнение происходит на уровне движка, расширение не требуется. Это устраняет поверхность обнаружения.
Сочетание с другими сигналами идентичности
Закладки естественно интегрируются с другими флагами идентичности BotBrowser. Полная настройка идентичности может включать закладки, cookie, историю просмотров, часовой пояс, локаль и конфигурацию прокси.
Настройка и использование
Базовое использование CLI
# Простая панель закладок
chrome --bot-profile="/path/to/profile.enc" \
--bot-bookmarks='[{"title":"Google","type":"url","url":"https://www.google.com"},{"title":"YouTube","type":"url","url":"https://www.youtube.com"}]'
Вложенная структура папок
chrome --bot-profile="/path/to/profile.enc" \
--bot-bookmarks='[{"title":"Google","type":"url","url":"https://www.google.com"},{"title":"News","type":"folder","children":[{"title":"BBC","type":"url","url":"https://www.bbc.com"},{"title":"Reuters","type":"url","url":"https://www.reuters.com"}]},{"title":"Shopping","type":"folder","children":[{"title":"Amazon","type":"url","url":"https://www.amazon.com"}]}]'
Интеграция с Puppeteer
const puppeteer = require('puppeteer-core');
const bookmarks = JSON.stringify([
{ title: 'Google', type: 'url', url: 'https://www.google.com' },
{ title: 'YouTube', type: 'url', url: 'https://www.youtube.com' },
{
title: 'News',
type: 'folder',
children: [
{ title: 'BBC', type: 'url', url: 'https://www.bbc.com' },
{ title: 'Reuters', type: 'url', url: 'https://www.reuters.com' },
],
},
]);
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
`--bot-bookmarks=${bookmarks}`,
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
console.log('Browser launched with pre-populated bookmarks');
await browser.close();
})();
Полная настройка идентичности
chrome --bot-profile="/path/to/profile.enc" \
--bot-bookmarks='[{"title":"Google","type":"url","url":"https://www.google.com"},{"title":"Amazon","type":"url","url":"https://www.amazon.de"}]' \
--bot-inject-random-history \
--bot-cookies="@/path/to/cookies.json" \
--bot-config-timezone=Europe/Berlin \
--bot-config-locale=de-DE \
--bot-config-languages=de-DE,de,en \
--proxy-server=socks5://user:pass@de-proxy:1080
Верификация
После запуска с --bot-bookmarks проверьте наличие закладок:
const page = await browser.newPage();
// Перейти в менеджер закладок
await page.goto('chrome://bookmarks');
// Или проверить через API chrome.bookmarks в привилегированном контексте
// Закладки должны сразу появиться в панели закладок
Также можно проверить появление закладок в омнибоксе, набрав домен URL закладки и проверив, показывает ли подсказка запись закладки.
Лучшие практики
- Согласуйте закладки с идентичностью профиля. Профиль немецкого пользователя должен иметь немецкие закладки: google.de, spiegel.de, amazon.de.
- Варьируйте закладки между идентичностями. Каждая идентичность браузера должна иметь уникальный набор закладок.
- Сохраняйте реалистичное количество. Типичный пользователь имеет от 10 до 50 закладок. Чрезмерно большие или пустые наборы выглядят необычно.
- Включайте разнообразие категорий. Реальные пользователи добавляют в закладки различные сайты: поисковики, новости, покупки, соцсети и рабочие ресурсы.
- Используйте папки для организации. Реальные панели часто содержат папки: "Работа", "Покупки", "Новости".
- Комбинируйте с другими флагами идентичности. Закладки лучше всего работают вместе с
--bot-cookies,--bot-inject-random-historyи настройками локали/часового пояса.
Часто задаваемые вопросы
Какой JSON-формат принимает --bot-bookmarks?
Флаг принимает JSON-массив объектов закладок. Каждый объект имеет title, type ("url" или "folder") и либо url (для URL-типа), либо массив children (для типа folder). JSON передаётся как строка прямо в аргументе CLI.
Можно ли загрузить закладки из файла вместо встроенного JSON?
Флаг --bot-bookmarks принимает JSON-строку напрямую. Для больших наборов закладок сформируйте JSON-строку в скрипте автоматизации и передайте как аргумент запуска.
Когда закладки становятся доступными после запуска?
Закладки заполняются во время инициализации браузера, до загрузки страниц. Они сразу появляются в панели и менеджере закладок.
Сохраняются ли закладки между сессиями?
Закладки, загруженные через --bot-bookmarks, загружаются заново при каждом запуске. Если вы используете один и тот же --user-data-dir между сессиями, закладки, добавленные во время сессии, сохранятся, но --bot-bookmarks всегда применяет свои записи поверх.
Можно ли использовать --bot-bookmarks с --bot-inject-random-history?
Да. Эти флаги дополняют друг друга. Их сочетание создаёт сессию с закладками и историей, формирующими более полную идентичность.
Требуется ли определённый тариф для --bot-bookmarks?
Флаг --bot-bookmarks доступен в базовом пакете BotBrowser без ограничений по тарифу.
Сколько закладок следует включать?
Стремитесь к 10-50, соответствующим тому, что типичный пользователь накапливает со временем. Включайте сочетание популярных сайтов и нишевых ресурсов, соответствующих персоне профиля.
Резюме
Предзаполнение закладок через --bot-bookmarks добавляет реалистичный слой идентичности к сессиям BotBrowser. В сочетании с cookie, историей просмотров и согласованными настройками локали, закладки помогают создавать профили браузера, отражающие реальные паттерны использования, а не свежие установки.
Смежные темы: Управление cookie для сохранения сессий, Синтетическая история просмотров для заполнения истории и Управление профилями для организации полных наборов идентичностей.
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.