Перейти к основному содержимому

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 на страницу.

Полное описание полей — в руководстве.

Сравнение с другими инструментами​

ИнструментБраузерСтатусКогда использовать
SquidwarcChrome через Puppeteer / CDPНе развивается с 2020Только для изучения или воспроизведения старых конвейеров
Browsertrix CrawlerChromium (Docker)АктивенБольшинство задач с JavaScript, WACZ
BrozzlerChromium + warcproxАктивенРаспределённый обход (состояние в RethinkDB)
WarcworkerSquidwarc в DockerВ архивеОчередь отдельных URL через веб-интерфейс

Ресурсы​

Связанные материалы​