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

wparc (WordPress)

wparc — утилита командной строки для резервного копирования публичных данных сайтов на WordPress через REST API (точка /wp-json/, есть в WordPress начиная с версии 4.7). Вместо обхода HTML-страниц она читает структурированные данные API, поэтому выгрузка получается быстрее и сохраняет метаданные: даты, авторов, рубрики, теги.

Установка​

pip install wparc

На PyPI опубликована версия 1.0.8 (июль 2026 года): команды ping, analyze, dump, getfiles. В репозитории уже есть версия 1.0.9 (5 октября 2026 года) с дополнительными командами index и warc, параллельной выгрузкой --workers, HTTP Basic Auth и ограничением частоты запросов. Пока она не опубликована на PyPI, её можно поставить из GitHub:

pip install git+https://github.com/ruarxive/wparc.git

Требуется Python 3.8 или новее (requires-python в пакете; README рекомендует 3.9+).

Команды сверены с README и --help версий 1.0.8 (PyPI) и 1.0.9 (GitHub), октябрь 2026.

Команды​

Домен передаётся позиционным аргументом, без https://.

КомандаЧто делаетВерсия
wparc ping example.comПроверяет, что /wp-json/ доступен, и выводит число маршрутов API1.0.8
wparc analyze example.comСравнивает маршруты сайта со списком известных и проверяет неизвестные1.0.8
wparc dump example.comВыгружает данные всех маршрутов API в JSONL1.0.8
wparc getfiles example.comСкачивает медиафайлы из wp_v2_media.jsonl (нужен предварительный dump)1.0.8
wparc index example.comСтроит SQLite-индекс example.com/index.sqlite3 по результатам dump1.0.9
wparc warc example.comУпаковывает результаты dump в файл WARC 1.11.0.9

Основные опции​

  • Общие для ping, dump, analyze: --https/--no-https (по умолчанию HTTPS), --no-verify-ssl, --timeout (по умолчанию 360 с), -v/--verbose.
  • dump: --page-size (по умолчанию 100), --retry-count (по умолчанию 5), --all/-a (включать неизвестные маршруты, по умолчанию включено).
  • Только в 1.0.9: dump --workers N и --index; getfiles --workers N (по умолчанию 5) и --no-resume; --user, --password, --rate-limit у ping, dump, analyze; warc --output FILE (по умолчанию dump.warc.gz) и --no-compress.

Пример​

# 1. Проверить доступность API
wparc ping example.com

# 2. Выгрузить данные
wparc dump example.com --verbose

# 3. Скачать медиафайлы
wparc getfiles example.com

# Только в версии 1.0.9 из GitHub:
wparc index example.com
wparc warc example.com --output example.warc.gz

Формат результата​

Все результаты складываются в каталог с именем домена в текущей папке:

example.com/
├── data/
│ ├── wp-json.json # корневой ответ /wp-json/
│ ├── wp_v2_posts.jsonl # записи
│ ├── wp_v2_pages.jsonl # страницы
│ ├── wp_v2_media.jsonl # метаданные медиафайлов
│ ├── wp_v2_types.json
│ └── ... # остальные маршруты: по файлу на маршрут
├── files/
│ └── wp-content/uploads/... # медиафайлы с исходной структурой путей
├── .wparc_checkpoint.json # список уже скачанных файлов (докачка)
├── index.sqlite3 # wparc index (1.0.9)
└── dump.warc.gz # wparc warc (1.0.9)

Повторный dump перезаписывает файлы в data/. getfiles пропускает файлы, уже отмеченные в .wparc_checkpoint.json.

О WARC из wparc warc​

Команда warc записывает одну запись warcinfo и по одной записи response на каждую строку JSONL. Адрес записи (WARC-Target-URI) имеет вид <файл>#<id>, а в теле лежит JSON-объект WordPress. Такой файл удобно хранить вместе с другими WARC и индексировать metawarc, но это не веб-архив страниц сайта: открыть его в pywb как сайт нельзя.

Ограничения​

  • Работает только там, где REST API открыт. Часть владельцев сайтов закрывает /wp-json/ для неавторизованных пользователей, у WordPress старше 4.7 этой точки нет.
  • Выгружается только опубликованный и публично доступный контент. Маршруты, отвечающие 401/403, пропускаются.
  • Вёрстка, CSS и JavaScript не сохраняются. Если важно, как сайт выглядел, дополнительно снимите его краулером с записью в WARC: Browsertrix Crawler, wget с --warc-file или grab-site.
  • Маршруты плагинов выгружаются, если они видны в /wp-json/ и не требуют авторизации; analyze помогает их найти.

Когда выбрать другой инструмент​

ЗадачаЛучше подойдёт
Нужен вид страниц, JavaScript, ленивая подгрузкаBrowsertrix Crawler
Сайт без открытого /wp-json/wget с --warc-file, grab-site
Нужен WARC с HTTP-ответами для просмотракраулеры выше; для просмотра — pywb
Поиск и анализ уже собранных WARCmetawarc

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