Squidwarc
Последние изменения в репозитории N0taN3rd/Squidwarc — май 2020 года. Зависимости устарели (Puppeteer 1.x), на современных Node.js и Chrome проект может не запуститься. Для браузерной архивации сейчас используйте Browsertrix Crawler или Brozzler.
Squidwarc — архивный кроулер с высокой точностью воспроизведения, который управляет Chrome или Chromium (с интерфейсом или без) и записывает WARC. Автор — John Berlin (N0taN3rd), исследовательская группа Web Science and Digital Libraries (WS-DL) Университета Олд-Доминион. Лицензия Apache-2.0.
Проект задумывался как простой в установке инструмент для личного архивиста, который выполняет JavaScript, в отличие от Heritrix. Построен на Node.js, node-warc, Puppeteer и chrome-remote-interface.
Как устроен
Squidwarc — автоматический кр оулер. Он не предоставляет «ручного» режима управления браузером. Обход настраивается JSON-файлом, а дополнительные действия на странице (прокрутка, раскрытие элементов) выполняет пользовательский скрипт (userFns.js), который запускается на каждой странице.
Готовые режимы обхода (mode):
page-only— только сама страница, ссылки не обходятся;page-same-domain— страница и ссылки с неё на тот же домен;page-all-links— страница и все ссылки с неё, включая внешние.
Установка
npm-пакета нет: Squidwarc ставится из исходников с помощью скрипта bootstrap.sh.
git clone https://github.com/N0taN3rd/Squidwarc
cd Squidwarc
./bootstrap.sh
В репозитории есть также Dockerfile и docker-compose.yml.
Команды сверены с README репозитория N0taN3rd/Squidwarc (версия 1.2.0 в
package.json, октябрь 2026). Работоспособность на современных системах не проверялась.
Использование
Запуск обхода по конфигурации:
./run-crawler.sh -c conf.json
# или
node index.js -c conf.json
Пример conf.json (из репозитория):
{
"use": "puppeteer",
"headless": true,
"script": "./userFns.js",
"mode": "page-only",
"depth": 1,
"seeds": [
"https://example.com/"
],
"warc": {
"naming": "url"
},
"connect": {
"launch": true,
"host": "localhost",
"port": 9222
},
"crawlControl": {
"globalWait": 60000,
"inflightIdle": 1000,
"numInflight": 2,
"navWait": 8000
}
}
seeds— стартовые URL,depth— глубина обхода.connect— запускать ли Chrome самому (launch) или подключиться к уже запущенному с--remote-debugging-port.crawlControl— таймауты в миллисекундах: максимальное время на страницу, ожидание «тишины» в сети, ожидание навигации.warc.append— писать всё в один WARC или отдельный WARC на страницу.
Полное описание полей — в руководстве.
Сравнение с другими инструментами
| Инструмент | Браузер | Статус | Когда использовать |
|---|---|---|---|
| Squidwarc | Chrome через Puppeteer / CDP | Не развивается с 2020 | Только для изучения или воспроизведения старых конвейеров |
| Browsertrix Crawler | Chromium (Docker) | Активен | Большинство задач с JavaScript, WACZ |
| Brozzler | Chromium + warcprox | Активен | Распределённый обход (состояние в RethinkDB) |
| Warcworker | Squidwarc в Docker | В архиве | Очередь отдельных URL через веб-интерфейс |
Ресурсы
Связанные материалы
- Browsertrix
- Warcworker — веб-интерфейс и очередь поверх Squidwarc
- Динамические и AJAX-сайты
- Формат WARC