Несмотря на свою полезность, предыдущие ответы не в состоянии кратко, надежно и многократно решить основной вопрос. В этом посте мы кратко расскажем о трудностях с каждым из них, а затем предложим скромное решение на основе httrack
.
Фон
Прежде чем мы перейдем к этому, рассмотрим хорошо написанный ответ mpy . К сожалению, в своем посте mpy строго документирует неясную (и, честно говоря, запутанную) архивную схему Wayback Machine.
Неудивительно, что это не красиво. Вместо разумного архивирования сайтов в один каталог, The Wayback Machine эфемерно распределяет один сайт по двум или более численно идентифицированным одноуровневым каталогам. Сказать, что это усложняет зеркалирование, было бы существенным преуменьшением.
Понимание ужасных ловушек, представленных этой схемой, является основой для понимания неадекватности предыдущих решений. Давай продолжим, ладно?
Предыдущее решение 1: wget
Связанный вопрос StackOverflow "Восстановить старый сайт с waybackmachine" , вероятно, является худшим нарушителем в этом отношении, рекомендуя wget
для зеркалирования Wayback. Естественно, что эта рекомендация принципиально несостоятельна.
В отсутствие сложной перезаписи внешних URL (например, Privoxy
), wget
нельзя использовать для надежного зеркалирования сайтов, заархивированных Wayback. Как МРУ подробности в разделе «Проблема 2 + Решение» независимо от зеркального инструмента вы выбираете , должны позволить вам не транзитивно загружать только URL - адреса , принадлежащие к целевому участку. По умолчанию большинство инструментов зеркалирования транзитивно загружают все URL-адреса, принадлежащие как целевому сайту, так и сайтам, на которые ссылается этот сайт, что в худшем случае означает «весь Интернет».
Конкретный пример в порядке. При зеркалировании примера домена kearescue.com
ваш инструмент зеркалирования должен:
- Включите все URL-адреса, соответствующие
https://web.archive.org/web/*/http://kearescue.com
. Это ресурсы, предоставляемые целевым сайтом (например, https://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js
).
- Исключить все остальные URL. Это ресурсы, предоставленные другими сайтами, которые просто связаны с целевым сайтом (например,
https://web.archive.org/web/20140517180436js_/https_/connect.facebook.net/en_US/all.js
).
Если исключить такие URL-адреса, как правило, используется во всех или большей части Интернета, заархивированных в момент архивирования сайта, особенно для сайтов, в которых размещаются внешние ресурсы (например, видео YouTube).
Это было бы плохо. В то время как wget
действительно обеспечивает параметр командной строки --exclude-directories
принимающую один или несколько шаблонов , соответствующих URL - адресов , которые будут исключены, это не общего назначения регулярных выражений; это упрощенные глобы, синтаксис которых *
соответствует нулю или более символов, исключая /
. Поскольку исключаемые URL-адреса содержат произвольное количество символов /
, wget
нельзя использовать для исключения этих URL-адресов и, следовательно, нельзя использовать для зеркалирования сайтов, заархивированных Wayback. Период. Конец неудачной истории.
Эта проблема была в открытом доступе по крайней мере с 2009 года. Это еще не решено. Следующий!
Предыдущее решение 2: записки
Prinz рекомендует ScrapBook
, плагин для Firefox. Плагин Firefox.
Это было, вероятно, все, что вам нужно было знать. В то время как фильтр ScrapBook
«s Filter by String...
функциональность делает решение вышеупомянутого„Задача 2 + решения“ , он не обращается к последующей„Задаче 3 + Решение“ , а именно - проблема посторонних дублей.
Сомнительно , что ScrapBook
адекватно решает первую проблему. Как признается mpy :
Хотя Scrapbook не удалось полностью захватить сайт ...
Ненадежные и чрезмерно упрощенные решения не являются решениями. Следующий!
Предыдущее решение 3: wget + Privoxy
Затем mpy предоставляет надежное решение, использующее как wget
и Privoxy
. В то время как wget
является достаточно простой в настройке, Privoxy
ничего , но разумно. Или просто.
Из-за непреодолимых технических препятствий для правильной установки, настройки и использования Privoxy
нам еще предстоит подтвердить решение mpy . Он должен работать масштабируемым и надежным способом. Учитывая барьеры для входа, это решение, вероятно, больше подходит для крупномасштабной автоматизации, чем средний веб-мастер, пытающийся восстановить мелкие и средние сайты.
Стоит ли смотреть wget
+ Privoxy
? Абсолютно. Но большинство суперпользователей могут быть лучше обслужены более простыми, более легко применимыми решениями.
Новое решение: httrack
Введите httrack
, утилиту командной строки, реализующую расширенный набор функций зеркалирования wget
. httrack
поддерживает как исключение URL на основе шаблонов, так и упрощенную реструктуризацию сайта. Первый решает mpy "Проблема 2 + Решение"; последняя «проблема 3 + решение».
В приведенном ниже абстрактном примере замените:
${wayback_url}
по URL-адресу каталога верхнего уровня, который архивирует весь целевой сайт (например, 'https://web.archive.org/web/20140517175612/http://kearescue.com'
).
${domain_name}
с тем же доменным именем, присутствующим в ${wayback_url}
за исключением префикса http://
(например, 'kearescue.com'
).
Вот так. Установите httrack
, откройте окно терминала, cd
в локальный каталог, в который вы хотите загрузить свой сайт, и выполните следующую команду:
httrack\
${wayback_url}\
'-*'\
'+*/${domain_name}/*'\
-N1005\
--advanced-progressinfo\
--can-go-up-and-down\
--display\
--keep-alive\
--mirror\
--robots=0\
--user-agent='Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5'\
--verbose
По завершении текущий каталог должен содержать один подкаталог для каждого типа файла, отраженного с этого URL. Обычно это включает в себя как минимум:
css
, содержащий все зеркальные таблицы стилей CSS.
html
, содержащий все зеркальные страницы HTML.
js
, содержащий весь зеркальный JavaScript.
ico
, содержащий один зеркальный значок.
Поскольку httrack
внутренне переписывает весь загруженный контент, чтобы отразить эту структуру, ваш сайт теперь должен быть доступен для просмотра без изменений. Если вы преждевременно остановили указанную выше команду и хотите продолжить загрузку, добавьте параметр --continue
к той же самой команде и повторите попытку.
Вот и все. Не требуются внешние искажения, подверженные ошибкам перезапись URL-адресов или прокси-серверы на основе правил.
Наслаждайтесь, коллеги-суперпользователи.