September 23, 2024

Как создать клон сайта с помощью wget

Автор: Мутный Движ - @mytnui_dvij

Что такое wget. Его функции. И как с помощью него клонировать сайты

wget - Это утилита для неинтерактивной загрузки файлов из Интернета . Он поддерживает HTTP, HTTPS и FTP протоколов , а также поиск через HTTP - прокси.

Префиксы:

  • -V, --version вывод версии Wget и выход.
  • -h, --help вывод этой справки.
  • -b, --background после запуска перейти в фоновый режим.
  • -e, --execute=КОМАНДА выполнить команду в стиле `.wgetrc'.-

Остальные функции

[*]Журналирование и входной файл:

  • [*] -o, --output-file=ФАЙЛ записывать сообщения в ФАЙЛ.
  • [*] -a, --append-output=ФАЙЛ дописывать сообщения в конец ФАЙЛА.
  • [*] -d, --debug вывод большого количества отладочной информации.
  • [*] -q, --quiet молча (без выходных данных).
  • [*] -v, --verbose подробный вывод (по умолчанию).
  • [*] -nv, --no-verbose отключение подробного режима, но не полностью.
  • [*] -i, --input-file=ФАЙЛ загрузка URL'ов, найденных в ФАЙЛЕ.
  • [*] -F, --force-html считать, что входной файл - HTML.
  • [*] -B, --base=URL добавление URL в начало относительных ссылок в файл
  • [*]е -F -i.
  • [*]
  • [*]Загрузка:
  • [*] -t, --tries=ЧИСЛО установить ЧИСЛО повторных попыток (0 без ограничения).
  • [*] --retry-connrefused повторять, даже если в подключении отказано.
  • [*] -O, --output-document=ФАЙЛ записывать документы в ФАЙЛ.
  • [*] -nc, --no-clobber пропускать загрузки, которые приведут к
  • [*] загрузке уже существующих файлов.
  • [*] -c, --continue возобновить загрузку частично загруженного файла.
  • [*] --progress=ТИП выбрать тип индикатора выполнения.
  • [*] -N, --timestamping не загружать повторно файлы, только если они не новее, чем локальные.
  • [*] -S, --server-response вывод ответа сервера.
  • [*] --spider ничего не загружать.
  • [*] -T, --timeout=СЕКУНДЫ установка значений всех тайм-аутов в СЕКУНДЫ.
  • [*] --dns-timeout=СЕК установка тайм-аута поиска в DNS в СЕК.
  • [*] --connect-timeout=СЕК установка тайм-аута подключения в СЕК.
  • [*] --read-timeout=СЕК установка тайм-аута чтения в СЕК.
  • [*] -w, --wait=СЕКУНДЫ пауза в СЕКУНДАХ между загрузками.
  • [*] --waitretry=СЕКУНДЫ пауза в 1..СЕКУНДЫ между повторными попытками загрузки.
  • [*] --random-wait пауза в 0...2*WAIT секунд между загрузками.
  • [*] --no-proxy явно выключить прокси.
  • [*] -Q, --quota=ЧИСЛО установить величину квоты загрузки в ЧИСЛО.
  • [*] --bind-address=АДРЕС привязка к АДРЕСУ (имя хоста или IP) локального хоста.
  • [*] --limit-rate=СКОРОСТЬ ограничение СКОРОСТИ загрузки.
  • [*] --no-dns-cache отключение кэширования поисковых DNS-запросов.
  • [*] --restrict-file-names=ОС ограничение на символы в именах файлов, использование которых допускает ОС.
  • [*] --ignore-case игнорировать регистр при сопоставлении
  • [*] файлов и/или каталогов.
  • [*] -4, --inet4-only подключаться только к адресам IPv4.
  • [*] -6, --inet6-only подключаться только к адресам IPv6.
  • [*] --prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного семейства,
  • [*] может быть IPv6, IPv4 или ничего.
  • [*] --user=ПОЛЬЗОВАТЕЛЬ установить и ftp- и http-пользователя в ПОЛЬЗОВАТЕЛЬ.
  • [*] --password=ПАРОЛЬ установить и ftp- и http-пароль в ПАРОЛЬ.
  • [*]
  • [*]Каталоги:
  • [*] -nd, --no-directories не создавать каталоги.
  • [*] -x, --force-directories принудительно создавать каталоги.
  • [*] -nH, --no-host-directories не создавать каталоги как на хосте.
  • [*] --protocol-directories использовать имя протокола в каталогах.
  • [*] -P, --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/...
  • [*] --cut-dirs=ЧИСЛО игнорировать ЧИСЛО компонентов удалённого каталога.
  • [*]
  • [*]Опции HTTP:
  • [*] --http-user=ПОЛЬЗОВАТЕЛЬ установить http-пользователя в ПОЛЬЗОВАТЕЛЬ.
  • [*] --http-password=ПАРОЛЬ установить http-пароль в ПАРОЛЬ.
  • [*] --no-cache отвергать кэшированные сервером данные.
  • [*] -E, --html-extension сохранять HTML-документы с расширением `.html'.
  • [*] --ignore-length игнорировать поле заголовка `Content-Length'.
  • [*] --header=СТРОКА вставить СТРОКУ между заголовками.
  • [*] --max-redirect максимально допустимое число перенаправлений на страницу.
  • [*] --proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси.
  • [*] --proxy-password=ПАРОЛЬ установить ПАРОЛЬ в качестве пароля для прокси.
  • [*]
  • [*] --referer=URL включить в HTTP-запрос заголовок `Referer: URL'.
  • [*] --save-headers сохранять HTTP-заголовки в файл.
  • [*] -U, --user-agent=АГЕНТ идентифицировать себя как АГЕНТ вместо Wget/ВЕРСИЯ.
  • [*] --no-http-keep-alive отключить поддержание активности HTTP (постоянные подключения).
  • [*] --no-cookies не использовать кукисы.
  • [*] --load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом.
  • [*] --save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса.
  • [*] --keep-session-cookies загрузить и сохранить кукисы сеанса (непостоянные).
  • [*] --post-data=СТРОКА использовать метод POST; отправка СТРОКИ в качестве данных.
  • [*] --post-file=ФАЙЛ использовать метод POST; отправка содержимого ФАЙЛА.
  • [*] --content-disposition Учитывать заголовок Content-Disposition
  • [*] при выборе имён для локальных файлов (ЭКСПЕРИМЕНТАЛЬНЫЙ).
  • [*] --auth-no-challenge Отправить базовые данные аутентификации HTTP не дожидаясь ответа от сервера.
  • [*]
  • [*]Опции HTTPS (SSL/TLS):
  • [*] --secure-protocol=ПР выбор безопасного протокола: auto, SSLv2,
  • [*] SSLv3 или TLSv1.
  • [*] --no-check-certificate не проверять сертификат сервера.
  • [*] --certificate=FILE файл сертификата пользователя.
  • [*] --certificate-type=ТИП тип сертификата пользователя: PEM или DER.
  • [*] --private-key=ФАЙЛ файл секретного ключа.
  • [*] --private-key-type=ТИП тип секретного ключа: PEM или DER.
  • [*] --ca-certificate=ФАЙЛ файл с набором CA.
  • [*] --ca-directory=КАТ каталог, в котором хранится список CA.
  • [*] --random-file=ФАЙЛ файл со случайными данными для SSL PRNG.
  • [*] --egd-file=ФАЙЛ файл, определяющий сокет EGD со случайными данными.
  • [*]
  • [*]Опции FTP:
  • [*] --ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ.
  • [*] --ftp-password=ПАРОЛЬ установить ftp-пароль в ПАРОЛЬ.
  • [*] --no-remove-listing не удалять файлы файлы `.listing'.
  • [*] --no-glob выключить маски для имён файлов FTP.
  • [*] --no-passive-ftp отключить "пассивный" режим передачи.
  • [*] --retr-symlinks при рекурсии загружать файлы по ссылкам (не каталоги).
  • [*] --preserve-permissions сохранять права доступа удалённых файлов.
  • [*]
  • [*]Рекурсивная загрузка:
  • [*] -r, --recursive включение рекурсивной загрузки.
  • [*] -l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность).
  • [*] --delete-after удалять локальные файлы после загрузки.
  • [*] -k, --convert-links делать ссылки локальными в загруженном HTML.
  • [*] -K, --backup-converted перед преобразованием файла X делать резервную копию X.orig.
  • [*] -m, --mirror короткая опция, эквивалентная
  • [*] -N -r -l inf --no-remove-listing.
  • [*] -p, --page-requisites загрузить все изображения и проч., необходимые для отображения HTML-страницы.
  • [*] --strict-comments включить строгую (SGML) обработку комментариев HTML.
  • [*]
  • [*]
  • [*]Разрешения/запреты при рекурсии:
  • [*] -A, --accept=СПИСОК список разрешённых расширений, разделённых запятыми.
  • [*] -R, --reject=СПИСОК список запрещённых расширений, разделённых запятыми.
  • [*] -D, --domains=СПИСОК список разрешённых доменов, разделённых запятыми.
  • [*] --exclude-domains=СПИСОК список запрещённых доменов, разделённых запятыми.
  • [*] --follow-ftp следовать по ссылкам FTP в HTML-документах.
  • [*] --follow-tags=СПИСОК список используемых тегов HTML, разделённых запятыми.
  • [*] --ignore-tags=СПИСОК список игнорируемых тегов HTML, разделённых запятыми.
  • [*] -H, --span-hosts заходить на чужие хосты при рекурсии.
  • [*] -L, --relative следовать только по относительным ссылкам.
  • [*] -I, --include-directories=СПИСОК список разрешённых каталогов.
  • [*] -X, --exclude-directories=СПИСОК список исключаемых каталогов.
  • [*] -np, --no-parent не подниматься в родительский каталог.
  • Можно долго перечислять, однако больше подробной информации находится здесь

Это конечно всё интересно, но нам нужно создать клон сайта и давайте приступим к нему.

1. Установка wget на Windows

Для того чтобы установить wget, перейдите по ссылке и скачайте установочный exe-файл. Запустите exe-файл и установите wget как обычную программу, по умолчанию утилита устанавливается C:\Program Files (x86)\GnuWin32.

Вызываем командную строку(Win + R ; Вводим "cmd") и пишем нашу директорию с утилитой wget, далее в конце добавляем \bin, так как там и находится наш wget утилита. В моем случае это C:\Program Files\wget\bin

Отлично, мы установили wget!​

2. Клонирование сайта

И вот мы подошли к заключительной части, где мы создадим копию сайта. Для этого wget нам и поможет:​

wget -r -k -l 7 -p -E -nc URL

Спойлер: Рассмотрим используемые параметры:-r—указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.-k—используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).-p—указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).-l—определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.-E—добавлять к загруженным файлам расширение .html.-nc—при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

Подставляем вместо URL ваш сайт и готово. В определенный момент, вы можете остановить клонирование, сочетанием клавиш Ctrl + C. ​

Ваш сайт будет сохранен в папке, куда вы изначально скачивали wget утилиту.​