Большинство мануалов в Сети посвящено тому, как установить и запустить ее на сервере под управлением 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
Для скачивания полной копии сайта 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.
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 можно сделать практически всё что угодно - удалить, модифицировать, вставить нужную информацию. Разумеется, так как утилита вызывается из командной строки, её без проблем можно использовать в скриптах.
Дополнительной командой --directory
можно указать утилите, куда именно необходимо скачивать файлы. Однако необходимо учитывать, что по умолчанию утилита считает основной директорией путь c:\Users\Admin
, поэтому, вероятнее всего, скаченные файлы надо будет искать именно там.
Например, если задать Wayback machine downloader команду --directory d://1/
, то утилита будет скачивать файлы по пути c:\Users\Admin\D%3a\1\
.
Если вы никак не можете определить, куда именно сохраняется сайт, просто произведите поиск по имени любого скачиваемого файла.
Учтите, что Wayback machine downloader скачивает файлы как есть, а значит, в них будет содержаться большое количество мусора, включая рекламные блоки, счетчики, внешние ссылки и прочая информация. Поэтому перед размещением не забудьте удалить с web-страниц всю лишнее.