Как скачать сайт целиком

В Lunux на первый взгляд простые команды (которые и запускаются-то просто в командной строке) несут в себе огромный скрытый понетциал и возможности.

Сегодня рассмотрим одну из областей применения команды wget. С помощью wget можно скачивать сайты, включая картинки, всего лишь указав адрес сайта и определенные параметры. wget будет автоматически переходить по ссылкам на сайте и скачивать страницу за страницей. Это позволит, например, просматривать скаченный сайт в автономном режиме.

Как скачать сайт целиком

Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
wget --user-agent='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' -r -l 8 -k -i -p -E -F -e robots=off https://сайт-который-надо-скачать

После выполнения данной команды в директорию "сайт-который-надо-скачать" будет загружена локальная копия сайта https://сайт-который-надо-скачать Чтобы зайти на скаченный сайт, достаточно открыть главную страницу сайта (файл index.html).

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

Возможности применения утилиты wget не ограничиваются вышеописанным примером. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров.


GNU Wget 1.20.3 программа для загрузки файлов из сети в автономном режиме.
Использование: wget [ПАРАМЕТР]... [URL]...

Обязательные аргументы для длинных параметров являются обязательными и для коротких параметров.

Запуск:
-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 отключить вывод подробных сведений (не полностью)
--report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits.
-i, --input-file=ФАЙЛ загрузить URL-ы согласно локальному
или внешнему ФАЙЛУ.
-F, --force-html считать, что входной файл — HTML.
-B, --base=URL считать, что ссылки из входного файла (-i -F)
указаны относительно URL.
--config=FILE Specify config file to use.

Загрузка:
-t, --tries=ЧИСЛО установить ЧИСЛО повторных попыток
(0 без ограничения).
--retry-connrefused повторять, даже если в подключении отказано.
-O, --output-document=ФАЙЛ записывать документы в ФАЙЛ.
-nc, --no-clobber skip downloads that would download to
existing files (overwriting them).
-c, --continue возобновить загрузку частично загруженного
файла.
--progress=ТИП выбрать тип индикатора выполнения.
-N, --timestamping не загружать повторно файлы, только если они
не новее, чем локальные.
--no-use-server-timestamps не устанавливать метку времени локальному
файлу, полученную с сервера.
-S, --server-response вывод ответа сервера.
--spider ничего не загружать.
-T, --timeout=СЕКУНДЫ установка значений всех тайм-аутов в СЕКУНДЫ.
--dns-timeout=СЕК установка тайм-аута поиска в DNS в СЕК.
--connect-timeout=СЕК установка тайм-аута подключения в СЕК.
--read-timeout=СЕК установка тайм-аута чтения в СЕК.
-w, --wait=СЕКУНДЫ пауза в СЕКУНДАХ между загрузками
--waitretry=СЕКУНДЫ пауза в 1..СЕКУНДЫ между повторными
попытками загрузки
--random-wait пауза в 0.5*WAIT...1.5*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-пароль в ПАРОЛЬ
--ask-password запрашивать пароли.
--no-iri выключить поддержку IRI.
--local-encoding=КДР использовать КДР как локальную кодировку
для IRI
--remote-encoding=КДР использовать КДР как удалённую кодировку
по умолчанию
--unlink remove file before clobber.

Каталоги:
-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 отвергать кэшированные сервером данные.
--default-page=ИМЯ Изменить имя страницы по умолчанию (обычно
это «index.html»).
-E, --adjust-extension сохранять документы HTML/CSS с надлежащими
расширениями.
--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
при выборе имён для локальных файлов
(ЭКСПЕРИМЕНТАЛЬНЫЙ).
--content-on-error output the received content on server errors.
--auth-no-challenge отправлять информацию об аутентификации
Basic 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 отключить «пассивный» режим передачи.
--preserve-permissions сохранять права доступа удалённых файлов.
--retr-symlinks при рекурсии загружать файлы по ссылкам
(не каталоги).

WARC options:
--warc-file=FILENAME save request/response data to a .warc.gz file.
--warc-header=STRING insert STRING into the warcinfo record.
--warc-max-size=NUMBER set maximum size of WARC files to NUMBER.
--warc-cdx write CDX index files.
--warc-dedup=FILENAME do not store records listed in this CDX file.
--no-warc-compression do not compress WARC files with GZIP.
--no-warc-digests do not calculate SHA1 digests.
--no-warc-keep-log do not store the log file in a WARC record.
--warc-tempdir=DIRECTORY location for temporary files created by the
WARC writer.

Рекурсивная загрузка:
-r, --recursive включение рекурсивной загрузки.
-l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность).
--delete-after удалять локальные файлы после загрузки.
-k, --convert-links делать ссылки локальными в загруженном
HTML или CSS.
-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=СПИСОК список запрещённых расширений,
разделённых запятыми.
--accept-regex=REGEX regex matching accepted URLs.
--reject-regex=REGEX regex matching rejected URLs.
--regex-type=TYPE regex type (posix|pcre).
-D, --domains=СПИСОК список разрешённых доменов,
разделённых запятыми.
--exclude-domains=СПИСОК список запрещённых доменов,
разделённых запятыми.
--follow-ftp следовать по ссылкам FTP в HTML-документах.
--follow-tags=СПИСОК список используемых тегов HTML,
разделённых запятыми.
--ignore-tags=СПИСОК список игнорируемых тегов HTML,
разделённых запятыми.
-H, --span-hosts заходить на чужие узлы при рекурсии.
-L, --relative следовать только по относительным ссылкам.
-I, --include-directories=СПИСОК список разрешённых каталогов.
--trust-server-names use the name specified by the redirection
url last component.
-X, --exclude-directories=СПИСОК список исключаемых каталогов.
-np, --no-parent не подниматься в родительский каталог.