Я пытаюсь использовать wget для создания локального зеркала сайта. Но я обнаружил, что я не получаю все страницы ссылок.
Вот сайт
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
Я не хочу, чтобы все страницы начинались с web.archive.org
, но я хочу, чтобы все страницы начинались с http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
.
Когда я использую wget -r
, в моей файловой структуре я нахожу
web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/index.html,
но у меня нет всех файлов, которые являются частью этой базы данных, например
web.archive.org/web/20110808041151/http://cst-www.nrl.navy.mil/lattice/struk/d0c.html.
Возможно, httrack будет лучше, но сейчас это слишком много.
Итак, каким образом можно получить локальную копию заархивированного веб-сайта с машины архивирования Интернета?
linux
wget
httrack
webarchive
user695322
источник
источник
20110722080716
снимком, поэтому-np
опция wget не поможет.Ответы:
Несмотря на полезность, предыдущие ответы не в состоянии кратко, надежно и многократно решить основной вопрос. В этом посте мы кратко расскажем о трудностях с каждым из них, а затем предложим скромное
httrack
решение.Фон
Прежде чем мы перейдем к этому, рассмотрим хорошо написанный ответ mpy . К сожалению, в своем посте mpy строго документирует неясную (и, честно говоря, запутанную) архивную схему Wayback Machine.
Неудивительно, что это не красиво. Вместо разумного архивирования сайтов в единый каталог, The Wayback Machine эфемерно распределяет один сайт по двум или более численно идентифицированным одноуровневым каталогам. Сказать, что это усложняет зеркалирование, было бы существенным преуменьшением.
Понимание ужасных ловушек, представленных этой схемой, является основой для понимания неадекватности предыдущих решений. Давай продолжим, ладно?
Предыдущее решение 1: wget
Связанный вопрос StackOverflow «Восстановить старый сайт с waybackmachine» , вероятно, является худшим нарушителем в этом отношении, рекомендуя
wget
зеркалирование Wayback. Естественно, что эта рекомендация принципиально несостоятельна.В отсутствие сложной перезаписи внешних URL-адресов (например,
Privoxy
)wget
нельзя использовать для надежного зеркалирования сайтов, заархивированных Wayback. Как МРУТ подробности в разделе «Проблема 2 + решение» , независимо от зеркального инструмента вы выбираете , должен позволить вам не транзитивно загрузить только URL - адрес , принадлежащих к целевому участку. По умолчанию большинство инструментов зеркалирования транзитивно загружают все URL-адреса, относящиеся как к целевому сайту, так и к сайтам, на которые ссылается этот сайт, что в худшем случае означает «весь Интернет».Конкретный пример в порядке. При зеркалировании домена примера
kearescue.com
ваш инструмент зеркального отображения должен :https://web.archive.org/web/*/http://kearescue.com
. Это активы, предоставляемые целевым сайтом (например,https://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js
).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
«SFilter by String...
функциональность делает адрес вышеупомянутой„Проблема 2 + Решение,“это не адрес последующего„Проблема 3 + Решение“ , а именно - проблема посторонних дублей.Сомнительно,
ScrapBook
даже адекватно ли решает прежнюю проблему. Как признается mpy :Ненадежные и чрезмерно упрощенные решения не являются решениями. Следующий!
Предыдущее решение 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
в локальный каталог, в который вы хотите загрузить свой сайт, и выполните следующую команду:По завершении текущий каталог должен содержать один подкаталог для каждого типа файла, отраженного с этого URL. Обычно это включает в себя как минимум:
css
, содержащий все зеркальные таблицы стилей CSS.html
, содержащий все зеркальные страницы HTML.js
, содержащий весь зеркальный JavaScript.ico
, содержащий один зеркальный значок.Поскольку
httrack
внутренне перезаписывает весь загруженный контент, чтобы отразить эту структуру, ваш сайт теперь должен быть доступен для просмотра без изменений. Если вы преждевременно остановили указанную выше команду и хотите продолжить загрузку, добавьте--continue
параметр к той же самой команде и повторите попытку.Вот и все. Не требуются внешние искажения, подверженные ошибкам перезапись URL-адресов или прокси-серверы на основе правил.
Наслаждайтесь, коллеги-суперпользователи.
источник
К сожалению, ни один из ответов не смог решить проблему создания полного зеркала из заархивированного веб-сайта (без дублирования каждого файла десятки раз). Поэтому я взломал другой подход. Взломанное является важным словом, так как мое решение не является ни общим решением, ни очень простым (читай: копировать и вставить). Я использовал Privoxy прокси - сервер , чтобы переписать файлы на лету , а зеркальное отображение с Wget.
Но во-первых, что такого сложного в отражении от Wayback Machine ?
Проблема 1 + Решение
Панель инструментов Wayback удобна для интерактивного использования, но может мешать работе wget. Так что избавьтесь от этого с помощью правила фильтра privoxy
Проблема 2 + Решение
Я хотел запечатлеть весь сайт, поэтому мне нужна была небольшая глубина рекурсии. Но я не хочу, чтобы wget сканировал весь сервер. Обычно для этой цели вы используете опцию wget без родителей
-np
. Но это не сработает, потому что вы хотите получитьно и
(обратите внимание на изменение метки времени в путях). Пропуск
-np
приведет к ползанию wget(...)http://cst-www.nrl.navy.mil
и, наконец, к поиску всегоnavi.mil
сайта. Я определенно не хочу этого! Таким образом, этот фильтр пытается эмулировать-np
поведение с машиной Wayback:Я оставлю это как упражнение, чтобы разобраться в синтаксисе. Что этот фильтр делает следующее: Он заменяет весь Вайбак URL , как
http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/
сhttp://some.local.server/404
тех пор , как они не содержатhttp://cst-www.nrl.navy.mil/lattice/
.Вы должны настроить
http://some.local.server/404
. Это должно послать ошибку 404 в wget. Вероятно, privoxy может сделать это более элегантно. Однако для меня проще всего было просто переписать ссылку на несуществующую страницу на локальном http-сервере, поэтому я застрял с этим.И, вы также должны настроить оба вхождения из
http://cst-www.nrl.navy.mil/lattice/
отразить сайт , который вы хотите зеркало.Проблема 3 + Решение
И, наконец, некоторая заархивированная версия страницы может ссылаться на страницу в другом снимке. И это еще один. И так далее ... и вы получите множество снимков одной и той же страницы - и wget никогда не удастся завершить, пока не получит все снимки. Я действительно не хочу этого, ни! Здесь очень помогает то, что машина Wayback очень умная. Вы можете запросить файл
даже если он не включен в
20110801041529
снимок. Он автоматически перенаправит вас на правильный:Итак, еще один фильтр privoxy для перезаписи всех снимков на самый последний
Фактически каждый 14-значный номер, заключенный в,
/.../
заменяется на20120713212803
(настройте его на самый последний снимок нужного вам сайта). Это может быть проблемой, если в структуре сайта есть такие числа, не связанные с Wayback-машиной. Не идеально, но хорошо для сайта Strukturtypen .Приятно то, что wget игнорирует новое местоположение, куда он перенаправляется, и сохраняет файл - в приведенном выше примере - как
web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
.Использование wget для зеркалирования заархивированного сайта
Итак, наконец, с этими фильтрами privoxy (определенными в
user.filter
), включеннымиuser.action
черезВы можете использовать wget как обычно. Не забудьте указать wget использовать прокси:
Я использовал эти опции, но
-m
тоже должен работать. Вы в конечном итоге с папкамитак как машина Wayback разделяет изображения (
im_
), таблицы стилей (cs_
) и т. д., я объединил все вместе и использовал некоторую магию sed, чтобы соответственно заменить уродливые относительные ссылки (../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
). Но это на самом деле не обязательно.источник
Wget
Обычно при загрузке одной HTML-страницы любые необходимые документы, которые могут потребоваться для ее правильного отображения, не загружаются. Использование -r вместе с -l может помочь, но поскольку Wget обычно не делает различий между внешними и встроенными документами, обычно остается "листовые документы", в которых отсутствуют их реквизиты.
Например, скажем, документ 1.html содержит тег «», ссылающийся на 1.gif, и тег «», указывающий на внешний документ 2.html. Скажем, что 2.html похож, но его изображение - 2.gif, и оно ссылается на 3.html. Скажите, что это продолжается до некоторого произвольно большого числа.
-m
--mirror
Включите параметры, подходящие для зеркалирования. Эта опция включает рекурсию и отметку времени, устанавливает бесконечную глубину рекурсии и сохраняет списки каталогов FTP. В настоящее время это эквивалентно -r -N -l inf --no-remove-list.
Обратите внимание, что Wget будет вести себя так, как если бы был указан ключ -r, но будет загружена только эта страница и ее реквизиты. Ссылки с этой страницы на внешние документы переходить не будут. На самом деле, чтобы загрузить одну страницу и все ее реквизиты (даже если они существуют на отдельных веб-сайтах) и убедиться, что партия отображается правильно локально, этот автор любит использовать несколько опций в дополнение к -p:
wget -E -H -k -K -p http://<site>/<document>
ТАК
wget -E -H -k -K -p http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice
будет вашим лучшим костюмом для вас. Но я рекомендую другой инструмент,firefox
расширениеscrapbook
альбом
ScrapBook - это расширение Firefox, которое помогает вам сохранять веб-страницы и легко управлять коллекциями. Ключевые особенности: легкость, скорость, точность и многоязычная поддержка. Основные функции:
* Сохранить веб-страницу
* Сохранить фрагмент веб-страницы
* Сохранить веб-сайт
* Организовать коллекцию так же, как закладки
* Полнотекстовый поиск и быстрая фильтрация поиска в коллекции
* Редактирование собранной веб-страницы
* Текст / HTML функция редактирования, напоминающая заметки Opera
Как создать зеркало сайта
Установите альбом и перезапустите Firefox
Restrict to Drirectory
/Domain
из фильтраДождитесь завершения зеркалирования. После зеркалирования вы можете получить доступ к веб-сайту в автономном режиме из
ScrapBook
меню.источник
:)
Будьте осторожны с приведенной ниже командой, потому что она захватывает много. 1 после 'l' говорит, что нужно захватить все страницы для ссылок на сайте, которые имеют глубину 1 уровень. Если вы хотите, чтобы паук глубже, измените это значение на 2, но оно может никогда не закончиться, потому что оно может попасть в цикл.
Я не уверен, какие части сайта вы хотите сохранить, а какие вам не нужны, но вам, вероятно, следует занести белый список и / или черный список различных частей сайта, чтобы получить только то, что вы хотите, и предотвратить себя. скачивание всего архива.орг или интернета.
Используйте
-D www.examle.com,www.another.example.com
для внесения в белый список только те домены, которые вы хотите, или используйте--exclude-domains www.examle.com,www.another.example.com
для внесения в черный список того, что вы не хотите.источник
web.archive.org
хоста. Я хочу отразить все то,wget -np
что отразилось бы, если бы оригинальный сайт был еще в сети.-l
тоже не очень помогает, так как его нужно увеличить до 3 или 4, что приводит к чрезмерному повышению иерархии веб-сайта.Формат URL для интернет-архива включает дату и время архивации сайта. Чтобы сохранить неиспользуемые ресурсы пространства, они связаны с предыдущей версией сайта.
Например, в этом URL http://web.archive.org/web/20000229123340/http://www.yahoo.com/ дата сканирования сайта: 29 февраля 2000 г., 12:33 и 40 секунд.
Таким образом, чтобы получить все, что
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
вам нужно, начать с этого, а также получить все связанные активыhttp://web.archive.org/web/*/http://cst-www.nrl.navy.mil/lattice/
.источник
Уже есть инструмент, который делает это лучше:
Чтобы получить его, вам нужно установить ruby. А потом:
источник