Как архивировать сайт с периодическими ошибками PHP?

Вопрос или проблема

Я пытаюсь заархивировать веб-сайт, который вскоре исчезнет. Я пробовал wget и httrack. Проблема в том, что веб-сайт время от времени выдает ошибки PHP (ошибка соединения с базой данных), и загруженная страница никчемна. В любом случае статус HTTP равен 200, поэтому wget считает, что загрузка прошла успешно. Строка ошибки предсказуема и легко сопоставима.

Есть ли способ сообщить wget или httrack, что следует перезагрузить, если ответ содержит определенную строку/выражение? Существуют ли лучшие инструменты для архивирования веб-сайтов в 2024 году?

Инструмент, который нужно использовать, это wget с Lua хуками от ArchiveTeam. Lua хук может просмотреть все содержимое загруженного файла и дать указание wget загружать снова, если найдено совпадение в шаблоне.

https://github.com/ArchiveTeam/wget-lua

Ответ или решение

Архивирование веб-сайта с проблемами PHP: пошаговое руководство

Каждый из нас может столкнуться с ситуацией, когда необходимо сохранить веб-сайт, который вскоре может исчезнуть. В вашем случае вы уже пробовали использовать инструменты wget и httrack, однако сталкиваетесь с проблемой, связанной с периодическими ошибками PHP, такими как ошибки подключения к базе данных. Поскольку HTTP-статус остается 200, эти ошибки не определяются как критические, что делает загруженные страницы бесполезными. В этой статье мы рассмотрим, как можно обойти эту проблему и эффективно архивировать веб-сайт.

Шаг 1. Использование wget с хуками на Lua

Одним из наиболее эффективных способов решения вашей проблемы является использование wget с Lua-хуками от ArchiveTeam. Этот метод позволяет проверять содержимое загруженной страницы и при необходимости повторно загружать, если оно содержит предсказуемую строку ошибки.

  1. Установка wget-lua:
    Вам необходимо установить специальную версию wget, поддерживающую Lua. Это можно сделать через GitHub:

    git clone https://github.com/ArchiveTeam/wget-lua.git
    cd wget-lua
    ./bootstrap.sh
    make
    sudo make install
  2. Создание Lua-скрипта:
    Напишите Lua-скрипт, который будет проверять содержимое страницы на наличие строки с ошибкой PHP:

    function check_page(data)
       if string.match(data, "Предсказуемая строка ошибки") then
           return false -- загрузка повторится
       end
       return true
    end
  3. Запуск wget с хуком:
    Используйте этот скрипт при запуске wget:

    wget-lua --lua-hook your_script.lua --recursive http://url-вашего-сайта

Шаг 2. Альтернативные инструменты для архивирования

Если вам по каким-то причинам не подходит wget с Lua или вы хотите рассмотреть более современные инструменты, вот несколько вариантов:

  • Webrecorder: Это мощный инструмент, который позволяет записывать динамические веб-сайты и воспроизводить их в будущем. Webrecorder может обойти ограничения, которые вы испытываете с wget.

  • SiteSucker (для macOS): Этот инструмент также может помочь в архивации сайтов. Он загружает страницы и может повторно загружать в случае ошибок.

Шаг 3. Использование дополнительных методов

Также стоит рассмотреть комбинирование подходов:

  1. Пакетный сценарий (Батник или shell-скрипт): Вы можете написать скрипт, который будет периодически запускать wget и проверять, была ли загружена страница без ошибок.

  2. Программирование и API: Если у вас есть навыки программирования, можно использовать API как Selenium для автоматизации проверки страниц и их загрузки.

Заключение

Сохранение контента с веб-сайта, который может исчезнуть, требует системного подхода и применения правильных инструментов. Использование wget с Lua-хуками предоставляет наилучшие возможности для вашей задачи, однако не забывайте о современных альтернативах, которые способны облегчить процесс архивации. Не оставляйте все на последнюю минуту и заранее подготовьте стратегии для успешного сохранения нужной информации.

Оцените материал
Добавить комментарий

Капча загружается...