Вопрос или проблема
Я хочу получить все файлы для данного сайта на archive.org. Причины могут включать:
- оригинальный автор не архивировал свой собственный сайт, и он сейчас недоступен, я хочу сделать из него публичный кэш
- я оригинальный автор какого-то сайта и потерял часть контента. Я хочу его восстановить
- …
Как мне это сделать?
Учитывая, что машина времени archive.org очень специфична: ссылки на веб-страницы не указывают на сам архив, а на веб-страницу, которая может больше не существовать. JavaScript используется на стороне клиента для обновления ссылок, но такой трюк, как рекурсивный wget, не сработает.
Я пробовал разные способы загрузки сайта и в конечном итоге нашел загрузчик машины времени – который был создан Hartator (все заслуги ему, пожалуйста), но я просто не заметил его комментарий на вопрос. Чтобы сэкономить ваше время, я решил добавить gem wayback_machine_downloader в качестве отдельного ответа здесь.
Сайт по адресу http://www.archiveteam.org/index.php?title=Restoring перечисляет эти способы загрузки из archive.org:
- Загрузчик машины времени, небольшой инструмент на Ruby для загрузки любого сайта из Машины времени. Бесплатно и с открытым исходным кодом. Мой выбор!
- Warrick – основной сайт, похоже, недоступен.
- Загрузчики из Машины времени – сервис, который загрузит ваш сайт из Машины времени и даже добавит плагин для WordPress. Не бесплатно.
Это можно сделать с помощью скрипта оболочки bash, объединенного с wget
.
Идея заключается в том, чтобы использовать некоторые из функций URL машины времени:
http://web.archive.org/web/*/http://domain/*
отобразит все сохраненные страницы сhttp://domain/
рекурсивно. Это можно использовать для составления индекса страниц для загрузки и избегания эвристики для обнаружения ссылок на веб-страницах. Для каждой ссылки также есть дата первой версии и последней версии.http://web.archive.org/web/YYYYMMDDhhmmss*/http://domain/page
отобразит все версииhttp://domain/page
для года YYYY. На этой странице можно найти конкретные ссылки на версии (с точной меткой времени)http://web.archive.org/web/YYYYMMDDhhmmssid_/http://domain/page
вернет неизмененную страницуhttp://domain/page
по заданной метке времени. Обратите внимание на токен id_.
Это основы для создания скрипта, который загрузит все с заданного домена.
Вы можете сделать это легко с помощью wget
.
wget -rc --accept-regex '.*ROOT.*' START
Где ROOT
– корневой URL сайта, а START
– начальный URL. Например:
wget -rc --accept-regex '.*http://www.math.niu.edu/~rusin/known-math/.*' http://web.archive.org/web/20150415082949fw_/http://www.math.niu.edu/~rusin/known-math/
Обратите внимание, что вам следует обойти фрейм веб-архива для URL START
. В большинстве браузеров вы можете нажать правой кнопкой мыши на странице и выбрать “Показать только этот фрейм”.
Существует инструмент, специально разработанный для этой цели, Warrick: https://code.google.com/p/warrick/
Он основан на протоколе Memento.
Загрузчик машины времени работает отлично. Загружает страницы – .html
, .js
, .css
и все ресурсы. Просто запустил index.html
локально.
При установленном Ruby просто выполните:
gem install wayback_machine_downloader
wayback_machine_downloader http://example.com -c 5 # -c 5 добавляет параллелизм для гораздо более быстрой загрузки
Если ваше соединение прервется на полпути через большую загрузку, вы даже можете запустить его снова, и он повторно загрузит любые недостающие страницы
Мне удалось сделать это, используя Windows Powershell.
- перейдите в машину времени и введите свой домен
- нажмите URLS
- скопируйте/вставьте все URL в текстовый файл (например, VS CODE). Возможно, вам придется повторить это, потому что машина времени показывает только 50 раз
- с помощью поиска и замены в VS CODE измените все строки, чтобы они выглядели так
Invoke-RestMethod -uri "https://web.archive.org/web/20200918112956id_/http://example.com/images/foobar.jpg" -outfile "images/foobar.jpg"
- использование поиска/замены с помощью REGEX полезно, например, измените шаблон
example.com/(.*)
наexample.com/$1" -outfile "$1"
Число 20200918112956 – это DateTime. Не имеет большого значения, что вы сюда вставите, потому что WayBack автоматически перенаправит на допустимую запись.
- Сохраните текстовый файл как
GETIT.ps1
в каталоге, например c:\stuff - создайте все необходимые каталоги, такие как c:\stuff\images
- откройте powershell,
cd c:\stuff
и выполните скрипт. - вам, возможно, нужно будет отключить безопасность, см. ссылку
Интересно, что официальный ответ – воспользоваться услугами третьих лиц, и они перечисляют несколько услуг в настоящее время:
https://waybackrebuilder.com
http://waybackdownloader.com
http://www.waybackmachinedownloader.com/en/
Wayback Downloads – Download Sites from Wayback Time Machine
Ответ или решение
Как скачать веб-сайт из архива Wayback Machine (archive.org)
Если вы хотите скачать файлы веб-сайта из архива Wayback Machine, существует несколько удобных методов, которые помогут вам в этом. Это может быть полезно в ряде случаев: вы хотите восстановить устаревший ресурс, который больше недоступен онлайн, или вам нужно восстановить потерянный контент, который был создан вами. В этой статье мы подробно обсудим различные способы загрузки контента из Wayback Machine и приведем необходимые примеры.
Способы скачивания сайта из Wayback Machine
-
Использование Wayback Machine Downloader
Один из самых распространенных инструментов для скачивания сайтов из архива — Wayback Machine Downloader, разработанный Hartator. Это легкий инструмент на языке Ruby, который позволяет загружать любой веб-сайт из Wayback Machine. Для установки и использования нужно:
- Убедиться, что на вашей машине установлен Ruby.
- Запустить команду в терминале:
gem install wayback_machine_downloader
- После установки вы можете начать загрузку:
wayback_machine_downloader http://example.com -c 5
Флаг
-c 5
добавляет параллельность для ускорения загрузки.
Этот способ работает эффективно и повторная загрузка позволяет получить отсутствующие страницы в случае обрыва соединения.
-
Использование
wget
Еще один способ скачать сайт — через командную строку с помощью утилиты
wget
. Это особенно полезно, если вы знакомы с командной строкой:- Запустите следующую команду для загрузки всего содержимого веб-сайта:
wget -rc --accept-regex '.*http://www.example.com/.*' http://web.archive.org/web/YYYYMMDDhhmmssfw_/http://www.example.com/
Замените
YYYYMMDDhhmmss
на соответствующую метку времени в архиве. Убедитесь, что вы используете полные ссылки и избегаете обрамляющих страниц.
- Запустите следующую команду для загрузки всего содержимого веб-сайта:
-
Bash-скрипт с использованием
wget
Вы также можете создать более сложный скрипт на языке Bash, который автоматически переберет все сохраненные страницы и загрузит их. Вот простой пример:
#!/bin/bash for URL in $(curl -s "http://web.archive.org/web/*/http://domain.com" | grep -o 'http://web.archive.org/web/[0-9]*/http://domain.com/' | sort -u); do wget -x $URL done
-
Использование PowerShell
Для пользователей Windows может быть удобным использовать PowerShell. Вы можете последовательно собрать URL-адреса страниц, а затем создать скрипт:
Invoke-RestMethod -uri "https://web.archive.org/web/YYYYMMDDhhmmssid_/http://example.com/images/foobar.jpg" -outfile "images/foobar.jpg"
Обязательно измените
YYYYMMDDhhmmss
на нужное значение, чтобы Wayback Machine мог правильно перенаправить запрос. -
Сторонние сервисы
Существует множество сторонних сервисов, которые могут помочь с загрузкой контента из Wayback Machine. Вот несколько из них:
Эти платформы могут предоставить дополнительные функции, такие как поддержка WordPress или автоматизация процесса, но часто требуют оплаты.
Заключение
Скачивание сайта из Wayback Machine может показаться сложным процессом, но с помощью вышеописанных методов вы сможете легко восстановить потерянный контент. Выбор способа зависит от ваших предпочтений и навыков. Не забудьте уважать права авторов и законность использования восстановленного контента.