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

Архивация страниц, которые видны после входа

Часть сайтов показывает материалы только после входа: закрытый раздел, личный кабинет, лента, которую сервер не отдаёт анонимному краулеру. Сохранять имеет смысл то, что ваша учётная запись и так вправе открыть.

Чужие пароли, украденные cookie и обход страницы входа не используются. Это то же правило, что в условиях использования сервисов.

Что выбрать​

СитуацияИнструмент
Страница собирается в браузере, есть JavaScriptBrowsertrix, профиль после вашего входа
Сервер отдаёт HTML и принимает cookie в запросеWget с файлом cookies вашей сессии
Нужны тексты WordPress, а REST API закрытwparc без авторизации их не получит; см. гайд по WordPress
Сайт и так публичныйВход не нужен: стратегии сбора

Heritrix умеет передавать HTTP-учётные данные в конфигурации задания. Готовый фрагмент конфигурации здесь не приводится: его надо брать из руководства к той версии Heritrix, которой вы пользуетесь, и проверять на тестовом обходе. Для страницы, которая без браузера пустая, Heritrix не заменяет Browsertrix.

Browsertrix: профиль своего входа​

Профиль создаётся интерактивно. Команды те же, что на странице Browsertrix:

docker run -p 6080:6080 -p 9223:9223 -v $PWD/crawls/profiles:/crawls/profiles/ \
-it webrecorder/browsertrix-crawler create-login-profile --url "https://example.com/"

Откройте http://localhost:9223/, войдите в свой аккаунт и сохраните профиль. Затем укажите его при обходе:

docker run --rm -v $PWD/crawls:/crawls/ \
webrecorder/browsertrix-crawler crawl \
--url https://example.com/private/ \
--profile /crawls/profiles/profile.tar.gz \
--generateWACZ \
--collection private-site

В профиль попадают сессионные cookie, не пароль. WACZ, снятый под учётной записью, может содержать персональные данные этой учётной записи и чужие сообщения, которые ей видны. Перед публикацией архив нужно просмотреть. Закрытые переписки других людей в архив не кладут.

Wget: cookies своей сессии​

Wget не открывает форму входа. Он подставляет cookie, которые вы сами выгрузили из браузера, где уже вошли в аккаунт. Формат файла — Netscape. Флаги описаны на странице Wget:

wget --mirror --warc-file=site --no-warc-compression \
--load-cookies=cookies.txt \
--wait=1 --random-wait \
--limit-rate=200k \
https://example.com/members/

Файл cookies.txt — это доступ к аккаунту. Его не коммитят в git и не прикладывают к WARC, который уходит в открытое хранилище. Флаг --save-cookies записывает cookie, которые сервер прислал во время обхода; этот файл тоже остаётся локальным.

Wget не выполняет JavaScript. Если после входа страница пустая без браузера, cookies ситуацию не исправят.

Перед публикацией​

  • Уберите из архива то, что не собирались сохранять: личные сообщения, адреса, закрытые документы.
  • Не публикуйте каталог профиля браузера и файл cookies.
  • В описании сбора укажите, что обход шёл от имени учётной записи с доступом к закрытому разделу, без подробностей самой учётной записи.
  • Если на страницах есть персональные данные других людей, смотрите персональные данные.

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