Справочники, инструменты, документация

Как скачать сайт из веб-архива web.archive.org

Легкий и бесплатный способ скачать сайт из веб-архива - это использование специально утилиты, написанной на Ruby, - wayback_machine_downloader.
Как скачать сайт из веб-архива web.archive.org

Большинство мануалов в Сети посвящено тому, как установить и запустить ее на сервере под управлением Unix, в результате чего пользователи, работающие под Windows и не имеющие собственных серверов, оказываются слегка обделенными. В этой статье мы расскажем о том, как просто установить Ruby и Wayback machine downloader на Windows и скачать сайт из веб-архива одним кликом.

Для начала отправляйтесь на официальный сайт Ruby https://rubyinstaller.org, а затем в разделе Download найдите нужную вам версию, например, Ruby+Devkit 3.1.0-1 (x64).

В настоящее время установка Ruby на Windows весьма упрощена и требует лишь запуска специального инсталлятора, в чей состав уже входит Devkit, который понадобиться для работы wayback machine downloader. После его загрузки просто запустите его как обычную программу.

После того, как Ruby будет установлен, найдите в меню Пуск программу Start Command Promt with Ruby, после чего перед вами появится командная строка. Используя ее, установите в систему wayback_machine_downloader следующей командой:

gem install wayback_machine_downloader

Спустя некоторое время, в командной строке появится уведомление о том, что программа успешно установлена.

Теперь вы можете скачивать сайты из web-архива всего лишь одной командой. Для этого введите в командную строку запрос:

wayback_machine_downloader http://example.com

После этого wayback machine downloader начнет свою работу, а в командной строке будут отображаться названия скачиваемых файлов, а также их количество.

Опции

Директория, куда сохраняются скаченные файлы (по умолчанию ./websites/ плюс имя домена):

-d, --directory

// Вы можете сохранить файлы в определенном каталоге, используя эту опцию:
wayback_machine_downloader http://example.com --directory downloaded-backup/

Загружать все слепки/метки времени данного сайта:

-s, --all-timestamps

// Эта опция загрузит все метки времени сайта. 
// Будет использовать метку времени каждого снимка в качестве каталога.
wayback_machine_downloader http://example.com --all-timestamps 

// websites/example.com/20060715085250/index.html
// websites/example.com/20051120005053/index.html
// websites/example.com/20060111095815/img/logo.png
// ...

Только файлы на указанную эту или более позднюю метку времени (например, 20060716231334):

-f, --from TIMESTAMP

// Пример:
wayback_machine_downloader http://example.com --from 20060716231334

Только файлы на указанную эту или более раннюю метку времени (например, 20100916231334):

-t, --to TIMESTAMP

// Пример:
wayback_machine_downloader http://example.com --to 20100916231334

Загрузить только указанные url, а не весь сайт. Если вы хотите получить только файл, точно соответствующий указанному URL-адресу, вы можете использовать эту опцию. Это позволит избежать загрузки чего-либо еще:

-e, --exact-url

// Пример, загрузить только html-файл домашней страницы example.com:
wayback_machine_downloader http://example.com --exact-url 

Ограничить загрузку теми url которые совпадают с этим фильтром (вы можете получить файлы определенного типа (например, .pdf, .jpg, .doc) или находящиеся в определенном каталоге. Для этого вы можете указать опцию --only со строкой или регулярным выражением, чтобы ограничить, какие файлы будет загружать Wayback Machine Downloader):

-o, --only ТОЛЬКО ПО ФИЛЬТРУ

// Пример, загружать файлы только внутри директории - my_directory:
wayback_machine_downloader http://example.com --only my_directory

// Или, загружать только изображения:
wayback_machine_downloader http://example.com --only "/\.(gif|jpg|jpeg)$/i"

Пропустить загрузку url, которые совпадают с этим фильтром (вы можете получить файлы, которые не относятся к определенному типу (например, .pdf, .jpg, .doc) или не находятся в определенном каталоге. Для этого вы можете указать опцию --exclude со строкой или регулярным выражением, чтобы ограничить, какие файлы будет загружать Wayback Machine Downloader):

-x, --exclude ФИЛЬТР ИСКЛЮЧЕНИЯ

// Пример, не загружать файлы внутри my_directory:
wayback_machine_downloader http://example.com --exclude my_directory

// Или, загрузить все, кроме изображений:
wayback_machine_downloader http://example.com --exclude "/\.(gif|jpg|jpeg)$/i"

По умолчанию загрузка ограничивается файлами, которые ответили кодом 200 OK. Если вам также нужны файлы ошибок (коды 40x и 50x) или файлы перенаправлений (коды 30x), вы можете использовать опцию --all или , -a и Wayback Machine Downloader загрузит их в дополнение к файлам 200 OK. Он также будет хранить пустые файлы, которые удаляются по умолчанию:

-a, --all

// Пример:
wayback_machine_downloader http://example.com --all

Число одновременно загружаемых файлов (по умолчанию это один файл за раз (пример, 20)). Укажите количество файлов, которые вы хотите загрузить одновременно. Позволяет значительно ускорить загрузку сайта:

-c, --concurrency ЧИСЛО

// Пример:
wayback_machine_downloader http://example.com --concurrency 20

Максимальное число рассматриваемых снимков страниц (укажите максимальное количество страниц моментальных снимков для рассмотрения, в среднем 150 000 снимков на страницу, 100 — это максимальное количество страниц моментальных снимков по умолчанию, и его должно быть достаточно для большинства веб-сайтов, используйте большее число, если вы хотите загрузить очень большой сайт):

-p, --maximum-snapshot ЧИСЛО

// Пример:
wayback_machine_downloader http://example.com --snapshot-pages 300

Вывести список url в формате JSON с метками времени архивирования, ничего не загружать:

-l, --list

// Пример:
wayback_machine_downloader http://example.com --list

Показать версию:

-v, --version

Запуск Wayback Machine Downloader

Для скачивания полной копии сайта suip.biz из веб-архива:

wayback_machine_downloader https://suip.biz

Только вывести ссылки на файлы из архива сайта hackware.ru, но ничего не загружать -l и сохранить эти ссылки в файл hackware-urls.json:

wayback_machine_downloader https://hackware.ru -l > hackware-urls.json

Наиболее частая ошибка, с которой вы можете столкнуться на данном этапе - это невозможность подключиться к веб-архиву, которая будет выглядеть так:

C:/Ruby25-x64/lib/ruby/2.5.0/net/http.rb:939:in 'rescue in block in connect': Failed to open TCP connection to web.archive.org:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - connect(2) for "web.archive.org" port 80) (Errno::ETIMEDOUT)

Для ее устранения обычно достаточно всего лишь отключить антивирус, блокирующий работу Ruby.

Создаем директорию и cкачиваем нужный сайт

mkdir ~/sites/
cd ~/sites/
wayback_machine_downloader http://supersite.com

Скачанные файлы будут доступны в ~/sites/websites/supersite.com/.

Указываем первый и последний таймштамп

У утилиты есть несколько параметров, которые могут помочь при скачивании ресурса. Параметрами -f (--from) и -t (--to) можно указать первый и последний таймштампы в рамках которых будут скачаны файлы. Таймштамп можно взять из URL при просмотре веб-архива, например:

https://web.archive.org/web/20171223224600/http://supersite.com

После чего останется запустить скачивание сайта. Делается это вот такой командой:

wayback_machine_downloader -f20171223224600 -t20180330034350 supersite.com

Таким образом мы скачаем архив с 23/12/2017 по 30/03/2018. Файлы сайта будут сохранены в домашней директории в папке websites/supersite.com.

Параметр -o (--only) позволит указать фильтр, и при скачивании будут сохранены только те страницы, где вхождение заданное в фильтре используется.

Параметр -x (--exclude) задаёт исключения. Совпадающие с указанным здесь вхождением адреса не будут скачаны.

wayback_machine_downloader -f20171223224600 -t20180330034350 supersite.com

Обработка скачанного

Дальнейшая обработка скачанного завивит от задач. Можно сразу же скопировать данные в директорию для файлов сайта, можно внести необходимые изменения в файлы, например, с помощью sed.

Сделаем бекап текущего состояния:

cd ~/sites/websites/
cp -arvp supersite.com supersite.com.backup

Переносим сайт с http на https:

cd ~/sites/websites/supersite.com
find ./ -type f -iname '*.html' -exec sed -i 's/http:/https:/g' {} \;

Удаляем код гугл-аналитики (осторожно, код может измениться и инструкция не сработает корректно, напишите в комментарии если так произошло, рассмотрим ваш случай):

cd ~/sites/websites/supersite.com
find ./ -type f -iname '*.html' -exec sed -i '/var _gaq/,/)()/d' {} \;
find ./ -type f -iname '*.html' -exec sed -i '/google_ad_client/,/pagead\/show_ads.js/d' {} \;

Удалем код Liveinternet:

cd ~/sites/websites/supersite.com
find ./ -type f -name '*.html' -exec sed -i <!--LiveInternet counter-->/,/<!--\/LiveInternet-->/d' {} \;

В общем, с помощью sed можно сделать практически всё что угодно - удалить, модифицировать, вставить нужную информацию. Разумеется, так как утилита вызывается из командной строки, её без проблем можно использовать в скриптах.

Куда скачивает файлы Wayback machine downloader

Дополнительной командой --directory можно указать утилите, куда именно необходимо скачивать файлы. Однако необходимо учитывать, что по умолчанию утилита считает основной директорией путь c:\Users\Admin, поэтому, вероятнее всего, скаченные файлы надо будет искать именно там.

Например, если задать Wayback machine downloader команду --directory d://1/, то утилита будет скачивать файлы по пути c:\Users\Admin\D%3a\1\.

Если вы никак не можете определить, куда именно сохраняется сайт, просто произведите поиск по имени любого скачиваемого файла.

Учтите, что Wayback machine downloader скачивает файлы как есть, а значит, в них будет содержаться большое количество мусора, включая рекламные блоки, счетчики, внешние ссылки и прочая информация. Поэтому перед размещением не забудьте удалить с web-страниц всю лишнее.