Несмотря на полезность, предыдущие ответы не в состоянии кратко, надежно и многократно решить основной вопрос. В этом посте мы кратко расскажем о трудностях с каждым из них, а затем предложим скромное 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: записки
Принц рекомендует 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
Enter 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-адресов или прокси-серверы на основе правил.
Наслаждайтесь, коллеги-суперпользователи.
20110722080716
снимком, поэтому-np
опция wget не поможет.