18
июль
2023
17:41

Замена утилиты Wget на Wget2 (часть 2)

18 июль 2023 17:41

Вторая часть статьи. См. часть 1.

HTTP опции:

--default-page=name
Использовать name в качестве имени файла по умолчанию, когда оно неизвестно (например, для URL-адресов, заканчивающихся косой чертой), вместо index.html.

--default-http-port=port
Установить порт по умолчанию для HTTP URL-ей (по умолчанию: 80).

Используется в-основном для целей тестирования.

--default-https-port=port
Установить порт по умолчанию для HTTPS URL-ей (по умолчанию: 443).

Используется в-основном для целей тестирования.

-E, --adjust-extension
Если загружается файл типа application/xhtml+xml или text/html, а URL-адрес не заканчивается регулярным выражением .[Hh][Tt][Mm][Ll]?, этот параметр приведет к тому, что суффикс .html будет быть добавлен к локальному имени файла. Это полезно, например, когда вы зеркалируете удаленный сайт, использующий страницы .asp, но хотите, чтобы зеркальные страницы были доступны для просмотра на вашем стандартном сервере Apache. Еще одно хорошее использование для этого — когда вы загружаете материалы, созданные CGI. URL-адрес вида https://example.com/article.cgi?25 будет сохранен как article.cgi?25.html.

Обратите внимание, что имена файлов, измененные таким образом, будут повторно загружаться каждый раз, когда вы повторно зеркалируете сайт, потому что Wget2 не может сказать, что локальный файл X.html соответствует удаленному URL-адресу X (поскольку он еще не знает, что URL-адрес производит вывод типа text/html или application/xhtml+xml).

Wget2 также гарантирует, что любые загруженные файлы типа text/css заканчиваются суффиксом .css.

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

--http-user=user, --http-password=password
Указать имя пользователя и пароль для HTTP-аутентификации. В зависимости от типа задачи Wget будет кодировать их, используя либо «базовую» (небезопасную), либо «digest»-схему аутентификации Windows, либо «NTLM».

Если возможно, поместите свои учетные данные в ~/.netrc (см. также параметры --netrc и --netrc-file) или в .wget2rc. Это намного безопаснее, чем использование командной строки, которую может видеть любой другой пользователь. Если пароли действительно важны, не оставляйте их лежать в этих файлах. Отредактируйте файлы и удалите их после того, как Wget2 начнет загрузку.

В файле ~/.netrc пароли могут быть заключены в двойные кавычки для пропуска пробелов. Кроме того, экранируйте символы обратной косой чертой, если это необходимо. Обратная косая черта в пароле всегда должна быть экранирована, поэтому используйте \ вместо одиночного .

Также см. --use-askpass и --ask-password для интерактивного метода предоставления вашего пароля.

--http-proxy-user=user, --http-proxy-password=password
Указывает имя пользователя и пароль для аутентификации на HTTP прокси сервере. Смотри для подробностей --http-user.

--http-proxy=proxies
Задает список HTTP-прокси через запятую. Переменная окружения http_proxy' будет переопределена. Исключения можно установить с помощью переменной окруженияno_proxy' или с помощью --no-proxy.

--https-proxy=proxies
Задает список HTTPS-прокси через запятую. Переменная окружения https_proxy будет переопределена. Исключения можно установить с помощью переменной окружения no_proxy или с помощью --no-proxy.

--no-http-keep-alive
Отключите функцию «keep-alive» для загрузок HTTP(S). Обычно Wget2 просит сервер оставить соединение открытым, чтобы при загрузке нескольких документов с одного сервера они передавались по одному и тому же TCP-соединению. Это экономит время и в то же время снижает нагрузку на сервер.

Эта опция полезна, когда по какой-то причине постоянные (keep-alive) соединения у вас не работают, например из-за бага сервера или из-за неспособности серверных скриптов справиться с соединениями.

--no-cache
Отключает кеш на стороне сервера. В этом случае Wget2 отправит удаленному серверу соответствующие директивы (Cache-Control: no-cache и Pragma: no-cache), чтобы получить файл с удаленного сервиса, а не вернуть кешированную версию. Это особенно полезно для извлечения и очистки устаревших документов на прокси-серверах.
Кеширование по умолчанию разрешено.

--no-cookies
Отключить использование файлов cookie. Файлы cookie — это механизм для поддержания состояния на стороне сервера. Сервер отправляет клиенту файл cookie, используя заголовок «Set-Cookie», и клиент отвечает тем же файлом cookie на дальнейшие запросы. Поскольку файлы cookie позволяют владельцам серверов отслеживать посетителей, а сайтам обмениваться этой информацией, некоторые считают их нарушением конфиденциальности. Файлы cookie используются по умолчанию; однако сохранение файлов cookies отключено.

--load-cookies file
Загружать файлы cookie из файла до первого запроса HTTP(S). файл представляет собой текстовый файл в формате, изначально использовавшемся файлом cookie.txt компании Netscape.

Обычно вы будете использовать эту опцию при зеркалировании сайтов, которые требуют, чтобы вы вошли в систему для доступа к части или всему их содержимому. Процесс входа в систему обычно работает, когда веб-сервер выдает файл cookie HTTP после получения и проверки ваших учетных данных. Затем файл cookie повторно отправляется браузером при доступе к этой части сайта и тем самым подтверждает вашу личность.

Зеркалирование такого сайта требует, чтобы Wget2 отправлял те же файлы cookie, которые ваш браузер отправляет при общении с сайтом. Это достигается с помощью --load-cookies: просто укажите Wget2 расположение файла cookies.txt, и он отправит те же файлы cookie, которые ваш браузер отправил бы в той же ситуации. Разные браузеры хранят текстовые файлы cookie в разных местах:

«Netscape 4.x». Файлы cookie находятся в ~/.netscape/cookies.txt.
«Mozilla и Netscape 6.x». Файл cookie Mozilla также называется cookies.txt и находится где-то в папке ~/.mozilla в каталоге вашего профиля. Полный путь обычно выглядит примерно так: ~/.mozilla/default/some-weird-string/cookies.txt.
«Internet Explorer». Вы можете создать файл cookie, который Wget2 может использовать, используя меню «Файл», «Импорт и экспорт», «Экспорт файлов cookie». Это было протестировано с Internet Explorer 5; не гарантируется работа с более ранними версиями.
«Другие браузеры». Если вы используете другой браузер для создания файлов cookie, --load-cookies будет работать, только если вы можете найти или создать файл cookie в формате Netscape, который ожидает Wget2.

Если вы не можете использовать --load-cookies, может быть альтернатива. Если ваш браузер поддерживает «менеджер файлов cookie», вы можете использовать его для просмотра файлов cookie, используемых при доступе к сайту, который вы дублируете. Запишите имя и значение файла cookie и вручную дайте указание Wget2 отправить эти файлы cookie, минуя «официальную» поддержку файлов cookie:
wget2 --no-cookies --header "Cookie: <name>=<value>"

--save-cookies file
Сохранять файлы cookie в файл перед выходом. При этом не будет сохраняться файлы cookie с истекшим сроком действия или без срока действия (так называемые «сеансовые файлы cookie»), но см. также опцию --keep-session-cookies.

--keep-session-cookies
Когда указана, опция заставляет --save-cookies также сохранять файлы cookie сеанса. Сеансовые файлы cookie обычно не сохраняются, поскольку они предназначены для хранения в памяти и забываются при выходе из браузера. Сохранение их полезно на сайтах, которые требуют, чтобы вы вошли в систему или посетили домашнюю страницу, прежде чем вы сможете получить доступ к некоторым страницам. С этой опцией несколько запусков Wget2 считаются одним сеансом браузера с точки зрения сайта.

Поскольку формат файлов cookie обычно не содержит сеансовых файлов cookie, Wget2 помечает их отметкой времени истечения срока действия, равной 0.
Wget2 --load-cookies распознает их как файлы cookie сеанса, но это может сбить с толку другие браузеры. Также обратите внимание, что файлы cookie, загруженные таким образом, будут рассматриваться как другие файлы cookie сеанса, а это означает, что если вы хотите, чтобы --save-cookies снова их сохраняла, вы должны снова использовать --keep-session-cookies.

--cookie-suffixes=file
Загрузить общедоступные суффиксы, используемые для проверки файлов cookie, из указанного файла.

Обычно базовая библиотека libpsl загружает эти данные из системного файла или имеет встроенные данные. В некоторых случаях может потребоваться загрузить обновленный файл публичных суффиксов PSL, например, из public_suffix_list.dat

PSL позволяет предотвратить установку «супер-куки», которые приводят к утечке конфиденциальности куки-файлов. Более подробную информацию можно найти на https://publicsuffix.org/.

--ignore-length
К сожалению, некоторые HTTP-серверы (точнее, CGI-программы) отправляют фиктивные заголовки «Content-Length», из-за чего Wget2 сходит с ума, поскольку считает, что не весь документ был получен. Вы можете заметить этот синдром, если Wget снова и снова пытается получить один и тот же документ, каждый раз утверждая, что (в остальном нормальное) соединение было закрыто на том же самом байте.

С этой опцией Wget2 будет игнорировать заголовок «Content-Length», как будто его никогда не существовало.

--header=header-line
Отправлять строку заголовка вместе с остальными заголовками в каждом HTTP-запросе. Предоставленный заголовок отправляется как есть, что означает, что он должен содержать имя и значение, разделенные двоеточием, и не должен содержать символы новой строки.

Вы можете определить более одного дополнительного заголовка, указав –header более одного раза.
wget2 --header='Accept-Charset: iso-8859-2' \
--header='Accept-Language: hr' \
https://example.com/

Указание пустой строки в качестве значения заголовка header очистит предыдущие определенные пользователем заголовки.

Эта опция может быть использована для переопределения заголовков, которые в противном случае генерируются автоматически. В этом примере Wget2 указывает подключиться к localhost, но указать example.com в заголовке «Host»:

wget2 --header="Host: example.com" http://localhost/

--max-redirect=number
Укажите максимальное количество перенаправлений для ресурса. Значение по умолчанию — 20, что обычно намного больше, чем необходимо. Однако в тех случаях, когда вы хотите разрешить больше (или меньше), можно использовать этот вариант.

--proxy-user=user, --proxy-password=password (Не реализовано, используйте --http-proxy-password).
Укажите логин user и пароль password для аутентификации на прокси-сервере. Wget2 закодирует их, используя «базовую» схему аутентификации.
Соображения безопасности, подобные тем, которые касаются --http-password, также применимы и здесь.

--referer=url
Включает заголовок "Referer: url" в HTTP-запрос. Полезно для извлечения документов с обработкой на стороне сервера, предполагающей, что они всегда извлекаются интерактивными веб-браузерами и выводятся должным образом только в том случае, если Referer установлен на одну из страниц, указывающих на них.

--save-headers
Сохранить заголовки, отправленные HTTP-сервером перед фактическим содержимым, в файл с пустой строкой в качестве разделителя.

-U agent-string, --user-agent=agent-string
Идентифицировать на HTTP сервере с помощью следующей строки «User-Agent».

Протокол HTTP позволяет клиентам идентифицировать себя с помощью поля заголовка «User-Agent». Это позволяет различать программное обеспечение WWW, обычно в статистических целях или для отслеживания нарушений протокола. Wget обычно идентифицируется как Wget/version, где version — номер текущей версии Wget.

Однако известно, что некоторые сайты навязывают политику адаптации вывода в соответствии с информацией, предоставленной «User-Agent». Хотя в теории это не такая уж плохая идея, ею злоупотребляют серверы, отказывающие в информации клиентам, отличным от (исторически) Netscape или, что чаще, Microsoft Internet Explorer. Эта опция позволяет вам изменить строку «User-Agent», выдаваемую Wget. Использование этой опции не рекомендуется, если вы действительно не знаете, что делаете.

--post-data=string, --post-file=file
Использовать POST в качестве метода для всех HTTP-запросов и отправки указанные данные в теле запроса. --post-data отправляет строку в виде данных, тогда как --post-file отправляет содержимое файла. В остальном они работают точно так же.

В частности, оба параметра ожидают содержимого в форме «ключ1=значение1&ключ2=значение2» с процентным кодированием для специальных символов.
Единственная разница в том, что один ожидает его содержимое как параметр командной строки, а другой принимает его содержимое из файла. В частности, --post-file не предназначен для передачи файлов в виде вложений формы: они должны отображаться как данные «ключ = значение» (с соответствующим процентным кодированием), как и все остальное.

В настоящее время Wget2 не поддерживает «multipart/form-data» для передачи данных POST; только «application/x-www-form-urlencoded». Должен быть указан только один из параметров: --post-data или --post-file.

Обратите внимание, что wget2 не требует, чтобы содержимое имело вид «ключ1=значение1&ключ2=значение2», и не проверяет его. Wget2 просто передаст любые предоставленные ему данные. Однако большинство серверов ожидают, что данные POST будут в указанном выше формате при обработке HTML-форм.

При отправке запроса POST с использованием параметра --post-file Wget2 обрабатывает файл как двоичный файл и будет отправлять каждый символ в запросе POST без удаления завершающих символов новой строки или перевода страницы. Любые другие управляющие символы в тексте также будут отправлены как есть в запросе POST.

Имейте в виду, что Wget2 необходимо заранее знать размер данных POST. Следовательно, аргумент --post-file должен быть обычным файлом; указание FIFO или что-то вроде /dev/stdin не будет работать. Не совсем понятно, как обойти это ограничение, присущее HTTP/1.0. Хотя HTTP/1.1 внес передачу данных по частям, для которой не требуется заранее знать длину запроса, клиент не может использовать эту передачу, если он не знает, что общается с сервером HTTP/1.1. И он не может этого знать, пока не получит ответ, который, в свою очередь, требует выполнения запроса — "проблема курицы и яйца".

Если Wget2 перенаправляется после завершения запроса POST, его поведение зависит от кода ответа, возвращенного сервером. В случае "301 перемещено навсегда", "302 перемещено временно" или "307 временно перенаправлено", Wget2, в соответствии с RFC2616, продолжит отправлять запрос POST. Если сервер хочет, чтобы клиент изменил метод запроса при перенаправлении, он должен отправить код ответа "303 See Other".

В этом примере показано, как войти на сервер с помощью POST, а затем перейти к загрузке нужных страниц, предположительно доступных только авторизованным пользователям:
# Войдите на сервер. Это можно сделать только один раз.
wget2 --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://example.com/auth.php
# Теперь захватываем страницу или страницы, которые нам интересны.
wget2 --load-cookies cookies.txt \
-p http://example.com/interesting/article.php

Если сервер использует сеансовые файлы cookie для отслеживания аутентификации пользователя, описанное выше не будет работать, потому что --save-cookies не сохранит их (как и браузеры), а файл cookies.txt будет пустым. В этом случае используйте ---keep-session-cookies вместе с опцией --save-cookies, чтобы принудительно сохранить файлы cookie сеанса.

--method=HTTP-Method
Для RESTful сценариев Wget2 позволяет отправлять другие HTTP-методы без необходимости явно устанавливать их с помощью --header=Header-Line. Wget2 будет использовать любую строку, переданную ему после --method, в качестве HTTP-метода для сервера.

--body-data=Data-String, --body-file=Data-File
Данная опция должна быть установлена, когда необходимо отправить дополнительные данные на сервер вместе с методом, указанным с помощью опции --method. Ключ --body-data отправляет строку как данные, а --body-file отправляет содержимое файла. В остальном они работают точно так же.

В настоящее время опция --body-file не предназначена для передачи файлов целиком. В настоящее время Wget2 не поддерживает «multipart/form-data» для передачи данных; только «application/x-www-form-urlencoded». В будущем это может быть изменено, чтобы wget2 отправлял --body-file как полный файл, а не отправлял его содержимое на сервер. Имейте в виду, что Wget2 необходимо заранее знать содержимое BODY Data, поэтому аргумент --body-file должен быть обычным файлом. См. --post-file для более подробного объяснения. Должен быть указан только один из --body-data и --body-file.

Если Wget2 перенаправляется после завершения запроса, Wget2 приостанавливает текущий метод и отправляет запрос GET до завершения перенаправления. Это верно для всех кодов ответа перенаправления, кроме 307 Temporary Redirect, который используется для явного указания того, что метод запроса не должен изменяться. Другое исключение — когда для метода установлено значение «POST», и в этом случае соблюдаются правила перенаправления, указанные в параметре --post-data.

--content-disposition
Если этот параметр включен, включается экспериментальная (не полностью функциональная) поддержка заголовков «Content-Disposition». В настоящее время это может привести к дополнительным обращениям к серверу для запроса «HEAD» и, как известно, страдает от нескольких ошибок, поэтому в настоящее время он не включен по умолчанию.

Этот параметр полезен для некоторых CGI-программ, загружающих файлы, которые используют заголовки «Content-Disposition» для описания того, каким должно быть имя загруженного файла.

--content-on-error
Если этот параметр включен, wget2 не будет пропускать содержимое, когда сервер отвечает кодом состояния http, указывающим на ошибку.

--save-content-on
После знака равно нужно указать список кодов состояния HTTP, разделенных запятыми, при которых будет происходить сохранение содержимого.

Вы можете использовать '*' для ЛЮБОГО. Восклицательный знак (!) перед кодом означает "исключение".

Пример 1: --save-content-on="*,!404" будет сохранять содержимое с любыми кодами статусов HTTP, кроме 404.

Пример 2: --save-content-on=404 будет сохранять содержимое только с кодом статуса HTTP 404.

Более старая опция --content-on-error дейстует так же, как --save-content-on=*.

--trust-server-names
Если этот параметр включен, при перенаправлении последний компонент URL-адреса перенаправления будет использоваться в качестве имени локального файла. По умолчанию используется последний компонент исходного URL.

--auth-no-challenge
Если указан этот параметр, Wget2 будет отправлять базовую информацию HTTP-аутентификации (незашифрованное имя пользователя и пароль) для всех запросов.

Использование этой опции не рекомендуется и предназначено только для поддержки некоторых малоизвестных серверов, которые никогда не отправляют запросы HTTP-аутентификации, но принимают незапрашиваемую информацию аутентификации, скажем, в дополнение к аутентификации на основе форм.

--compression=TYPE
Если указан этот ТИП компрессии (identity, gzip, deflate, xz, lzma, br, bzip2, zstd, lzip или любая его комбинация), Wget2 соответствующим образом установит заголовок «Accept-Encoding». --no-compression означает полное отсутствие заголовка «Accept-Encoding». Чтобы установить пользовательское значение «Accept-Encoding», используйте --no-compression в сочетании с --header="Accept-Encoding: xxx".

Замечание по совместимости: в Wget 1.X отсутствуют способы указания типа компрессии, которые есть в Wget2.

--download-attr=[strippath|usepath]
Атрибут загрузки HTML5 может указывать (или лучше: предлагать) имя файла из URL-адреса href в тегах "a" и "area". Этот параметр указывает Wget2 использовать это имя при сохранении файла. Два возможных значения: `strippath', чтобы отделить путь от имени файла. Это значение по умолчанию.

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

HTTPS (SSL/TLS) опции

Для поддержки зашифрованных HTTP (HTTPS) загрузок, Wget2 должен быть скомпилирован с поддержкой внешней SSL библиотеки. В настоящее время по умолчанию используется GnuTLS. Дополнительно, Wget2 также поддерживает HSTS (HTTP Strict Transport Security). Если Wget2 скомпилирован без поддержки SSL никакие из этих опций не являются доступными.

--secure-protocol=protocol
Выбрать безопасный протокол, который будет использоваться (по умолчанию: auto).

Разрешенные значения auto, SSLv3, TLSv1, TLSv1_1, TLSv1_2, TLSv1_3 и PFS.

Если используется auto, применяется режим по умолчанию TLS библиотеки.

Указание SSLV3 заставляет использовать SSL3. Это полезно при общении со старыми и имеющими ошибки реализациями сервера SSL, которым трудно при помощи нижележащей TLS-библиотеки сделать правильный выбор версии протокола TLS.

Указание PFS обеспечивает соблюдение наборов так называемой идеальной безопасности Perfect Forward Security. Вкратце, PFS добавляет безопасность создания одноразового ключа для каждого соединения TLS. Что оказывает немного больше влияния на процессор клиента и сервера. Знакомые нам как защищенные шифры (например, без MD4) и протокол TLS.

TLSV1 включает TLS1.0 или выше. TLSV1_1 включает TLS1.1 или выше. TLSV1_2 включает TLS1.2 или выше. TLSV1_3 включает TLS1.3 или выше.

Любая другая строка протокола непосредственно передается в библиотеку TLS, в настоящее время Gnutls, как строка «приоритет» или «шифр».
Эта опция для пользователей, которые понимают, что они делают.

--https-only
В режиме рекурсии, программа будет следовать только HTTPS ссылкам.

--no-check-certificate
Не проверять сертификат сервера в доступных центрах сертификации. Также может использоваться, если имя URL хоста не соответствует общему имени, представленному сертификатом.

По умолчанию выполняется проверка сертификата сервера в центрах сертификации, с разрывом рукопожатия SSL и прерыванием загрузки, если проверка сертификата не удается. Несмотря на то, что это обеспечивает более безопасные загрузки, он ломает совместимость с некоторыми сайтами, которые работали с предыдущими версиями WGET, особенно с теми, кто использует самоподписанные, истекшие, или иным образом недействительные сертификаты. Этот вариант заставляет «небезопасный» режим работы, который переворачивает ошибки верификации сертификата в предупреждения и позволяют вам продолжить.

Если вы сталкиваетесь с ошибками «проверка сертификата» или с упоминаниями, что «общее имя не соответствует запрошенному имени хоста», вы можете использовать эту опцию, чтобы обойти проверку и продолжить загрузку. Используйте эту опцию только в том случае, если вы убеждены в подлинности сайта, или если вы действительно не заботитесь о достоверности его сертификата. Почти всегда плохая идея не проверять сертификаты при передаче конфиденциальных или важных данных. Для себя

Самоподписанные / внутренние сертификаты: вы должны загрузить сертификат и проверить против него, вместо того, чтобы заставлять этот небезопасный режим. Если вы действительно уверены в том, что не желаете никакой проверки сертификата, вы можете указать --check-certificate=quiet, чтобы сказать WGET2, чтобы не печатать никаких предупреждений о неверных сертификатах, хотя в большинстве случаев это неправильно.

--certificate=file
Использовать сертификат клиента, хранящийся в файле. Эта опция необходима для серверов, которые настроены на то, чтобы требовать сертификатов от клиентов, которые подключаются к ним. Обычно сертификат не требуется, и этот переключатель не является обязательным.

--certificate-type=type
Указывает тип сертификата клиента. Воспринимаемые значения PEM (полагается по умолчанию) или DER, также известный как ASN1.

--private-key=file
Прочитать частный ключ из файла. Эта опция позволяет предоставить частный ключ в файле отдельно от сертификата.

--private-key-type=type
Указать тип частного ключа. Воспринимаемые значения PEM (по умолчанию) и DER.

--ca-certificate=file
Использовать файл в котором хранится связка сертификатов центров сертификации (“CA”) для проверки сторон. Сертификаты должны быть в формате PEM.

Без указания этой опции Wget2 обращается к сертификатам CA в системных расположениях (папках), выбранных во время установки OpenSSL.

--ca-directory=directory
Указывает каталог содержащий сертификаты центров сертификации (CA) в формате PEM. Каждый файл содержит один сертификат центра сертификации (CA), и имя файла образовано из хеш-значения данного файла сертификата. Это достигается путем обработки каталога сертификатов с утилитой «C_REHASH», поставляемой с OpenSSL. Использование --ca-directory более эффективно, чем --ca-certificate, когда установлено много сертификатов, потому что он позволяет WGET2 получать сертификаты по требованию.

Без этой опции WGET2 ищет сертификаты CA в расположенных системных расположениях, выбранных во время установки OpenSSL.

--crl-file=file
Указывает файл отозванных сертификатов (CRL). Он необходим для для указания сертификатов которые были отозваны центрами сертификации (CA).

--random-file=file
(Только для OpenSSL и LibreSSL). Использовать файл как источник случайных данных для начальных значений генератора псевдо-случайных чисел на системе без устройства /dev/urandom.

В таких системах библиотека SSL требует внешнего источника случайности для инициализации. Случайность может быть предоставлена EGD (см. –EGD ниже) или считываться из внешнего источника, указанного пользователем. Если эта опция не указана, WGET2 ищет случайные данные в $ randfile или, если это неверно, в $ home/.rnd.

Если вы получаете ошибку “Could not seed OpenSSL PRNG; disabling SSL.”, вы должны предоставить случайные данные, используя некоторые из методов, описанных выше.

--egd-file=file
[только для OpenSSL] Использовать файл как EGD сокет. Аббревиатура EGD означает Entropy Gathering Daemon (Служба сбора энтропии), программа пространства пользователя, которая собирает данные из различных непредсказуемых системных источников и делает возможным другим программам, которые используют шифрование, использовать энтропию, таким как библиотека SSL, которая требует источники неповторяющихся случайных значений чтобы посеять генератор случайных чисел используемый для создания криптографически стойких ключей.

OpenSSL позволяет пользователю указать свой собственный источник энтропии, используя переменную среды «RAND_FILE». Если эта переменная не установлена, или если указанный файл не дает достаточной случайности, OpenSSL будет читать случайные данные из EGD Socket, указанного с использованием этой опции.

Если эта опция не указана (и эквивалентная команда запуска не используется), EGD никогда не связывается .EGD не требуется в современных системах UNIX, которые поддерживают /dev/urandom.

--hsts
WGET2 поддерживает HSTS (HTTP Strict Transport Security, RFC 6797) по умолчанию. Используйте --no-hsts, чтобы заставить WGET2 действовать как не-совместимый с HSTS пользовательский агент. Как следствие, WGET2 игнорирует все заголовки “Strict-Transport-Security” и не будет обеспечивать какую-либо существующую политику HSTS.

--hsts-file=file
По умолчанию WGET2 сохраняет свои данные HSTS в $xdg_data_home/wget/.wget-hsts или, если xdg_data_home не установлен, в ~/.lo-cal/wget/.wget-hsts. Вы можете использовать --hsts-file, чтобы переопределить это.

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

Чтобы отключить постоянное хранилище, используйте --no-hsts-file.

База данных Wget2 HSTS представляет собой простой текстовый файл. Каждая строка содержит запись HSTS (т. е. сайт, который выдал заголовок “Strict-Transport-Security” и поэтому указал конкретную политику HSTS, которая будет применена). Строки, которые начиная с тире («#»), игнорируются Wget. Обратите внимание, что, несмотря на эту удобную для чтения человеком форму, исправлять базу данных HSTS вручную, как правило, не очень хорошая идея.

Входная линия HSTS состоит из нескольких полей, разделенных одним или несколькими пробелами:

имя_хоста ПРОБЕЛ порт ПРОБЕЛ включать_поддомены ПРОБЕЛ создано ПРОБЕЛ максимальный_возраст

Поля имени хоста и порта указывают имя хоста и порт, к которому применяется данная политика HSTS. Поле "порт" может быть пустым, оно и будет пустым в большинстве случаев. Это означает, что номер порта не будет учитываться при принятии решения о том, следует ли применяться такая политика HSTS по данному запросу (будет оценено только имя хоста). Когда порт не пуст, будут оценены как целевое имя хоста, так и порт, а политика HSTS будет применяться только в случае когда они оба - порт хоста и порт в файле совпадают. Эта функция была включена только в целях тестирования/разработки. TestSuite WGET2 (в TestenV/) создает базы данных HSTS с явными портами с целью обеспечения правильного поведения Wget2. Применение политик HSTS к портам, отличным от по умолчанию, RFC 6797 (см. Приложение B «Различия между« политикой HSTS и политикой Same-origin»). Таким образом, эта функциональность не должна использоваться в производственных средах, и порт обычно обычно будет быть пустым.

Последние три поля делают то, что от них ожидают. Поле "включать_поддомены" может быть либо 1, либо 0, и оно сигнализирует, должны ли субдомены целевого домена также быть частью данной политики HSTS. Поля "создано" и "максимальный_возраст" содержат значения временной метки, когда такая запись была создана (впервые увидена WGET) и определяемое HSTS значение max-age, в котором говорится, как долго эта политика HSTS остается активной, измеряемой в секундах, прошедших с момента создания последней временной метки, которая хранится в поле "создано". Как только это время пройдет, эта политика HSTS больше не будет действительной и в конечном итоге будет удалена из базы данных.

Если вы предоставляете свою собственную базу данных HSTS через опцию --hsts-file, имейте в виду, что WGET2 может изменить предоставленный файл, если какое-либо изменение происходит между политиками HSTS, запрашиваемыми удаленными серверами и политиками в файле. При выходе из Wget2, он эффективно обновляет базу данных HSTS, переписывая файл базы данных с помощью новых записей.

Если предоставляемый файл не существует, WGET2 создаст его. Этот файл будет содержать новые записи HSTS. Если записи HSTS не были сгенерированы (никакие заголовки “Strict-Transport-Security” не были отправлены ни одним из серверов), то файл не будет создан, даже пустой. Это поведение применимо к файлу базы данных по умолчанию (~/.wget-HSTS): он не будет создан, пока какой-то сервер не приведет к применению политики HSTS.

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

Использование пользовательской базы данных HSTS и/или изменения существующей. Для получения дополнительной информации о потенциальных угрозах безопасности возникла из -за такой практики, см. Раздел 14 «Соображения безопасности» стандарта RFC 6797, особенно параграф 14.9 «Творческие манипулирование набором политик HSTS».

--hsts-preload
Включает загрузку списка предварительной загрузки HSTS в соответствии с поддержкой libhsts. (По умолчанию: включено, если построено с Libhsts).

--hsts-preload-file=file
Если Wget2 собран с поддержкой libhsts, WGET2 использует данные HSTS, предоставленные программой установки. Если его нет в рамках дистрибутива или если вы хотите загрузить свой собственный файл, используйте эту опцию.

Данные в этом файле должны быть в формате DAFSA как генерирует программа libhsts пакета hsts-make-dafsa.

--hpkp
Разрешить HTTP Public Key Pinning (HPKP) (по умолчанию: включен).

Этот механизм Доверия При Первом Использовании (TOFU) добавляет ещё один уровень безопасности к HTTPS (см. RFC 7469).

Данные ключа сертификата ранее установленного сеанса TLS будут сравниваться с текущими данными. В случае оба не совпадают, соединение будет прекращено.

--hpkp-file=file
По умолчанию WGET2 сохраняет свои данные HPKP в $ xdg_data_home/wget/.wget-hpkp или, если xdg_data_home не установлен, в ~/.lo-cal/wget/.wget-hpkp. Вы можете использовать --hpkp-file, чтобы переопределить это поведение.

WGET2 будет использовать указанный файл в качестве базы данных HPKP. Такой файл должен соответствовать правильному формату базы данных HPKP, используемым
Wget. Если WGET2 не может проанализировать предоставленный файл, поведение не определено.

Чтобы отключить хранилище, используйте --no-hpkp-file.

--tls-resume
Включить возобновление сеанса TLS, которое отключено по умолчанию.

Для возобновления сеанса TLS необходимы данные ранее установленного сеанса TLS.

Существует несколько недостатков безопасности, связанных с возобновлением сеанса TLS 1.2, которые подробно объясняются по адресу.

--tls-session-file=file
По умолчанию, Wget2 хранит данные своего сеанса TLS в $ xdg_data_home/wget/.wget-session или, если xdg_data_home не установлен, в
~/.local/wget/.wget-session. Вы можете использовать --tls-session-file, чтобы переопределить его.

WGET2 будет использовать указанный файл в качестве базы данных сеанса TLS. Такой файл должен соответствовать правильному формату базы данных сеансов TLS, используемом WGET. Если WGET2 не может проанализировать предоставленный файл, поведение не определен.

Чтобы отключить постоянное хранилище, используйте --no-tls-session-file.

--tls-false-start
Включить TLS False Start (по умолчанию: включено).

Эта опция уменьшает переговоры TLS на один цикл приёма-передачи и, таким образом, ускоряет HTTPS-соединения.

Более подробная информация на https://tools.ietf.org/html/rfc7918.

--check-hostname
Включить TLS SNI (Server Name Indication) верификацию (по умолчанию: включено).

--ocsp
Включить OCSP доступ к серверу для проверки возможности отзыва HTTPS сертификатов сервера (по умолчанию: включено).

Эта процедура довольно медленная (подключайтесь к серверу, HTTP -запросу, ответ), и, таким образом, мы поддерживаем сшивание OSCP (сервер отправляет ответ OCSP в рукопожатии TLS) и обеспечивает постоянное кэширование OCSP.

--ocsp-date
Проверять что OCSP ответ слишком старый. (по умолчанию: включено)

--ocsp-nonce
Разрешить проверку действительности (nonce) при проверке ответа OCSP. (по умолчанию: включено)

--ocsp-server
Указать адрес OCSP сервера (по умолчанию: OCSP сервер указанный в сертификате).

--ocsp-stapling
Включить поддержку сшивания OCSP (по умолчанию: включено).

--ocsp-file=file
По умолчанию WGET2 хранит данные своего сеанса TLS в $xdg_data_home/wget/.wget-ocsp или, если xdg_data_home не установлен, в ~/.local/wget/.wget-ocsp. Вы можете использовать --ocsp-file, чтобы переопределить это.

WGET2 будет использовать указанный файл в качестве базы данных OCSP. Такой файл должен соответствовать правильному формату базы данных OCSP, используемому WGET. Если WGET2 не может проанализировать предоставленный файл, поведение не определено.

Чтобы отключить постоянное кэширования OCSP, используйте --no-ocsp-file.

--dane (экспериментальная функция)
Включить поддержку проверки DANE сертификата (по умолчанию: выключено).

В случае, если проверка сервера не удается из-за отсутствующих сертификатов CA (например, пустого пула сертификации), эта опция позволяет проверять записи TLSA DNS через DANE.

Вы должны установить DNSSEC, чтобы избежать атак MITM. Кроме того, записи DNS-хоста назначения должны быть настроены для DANE.

Предупреждение: этот вариант или его поведение могут измениться или могут быть удалены без дальнейшего уведомления.

--http2
Включить поддержку протокола HTTP/2 (по умолчанию: включено).

Wget2 запрашивает HTTP/2 через ALPN. Если он доступен, он использует его вместо HTTP/1.1. До 30 потоков используются параллельно внутри одного соединения.

--http2-only

Сопротивляться и использовать только HTTP/2 подключения и выдавать ошибку если сервер не воспринимает это. Главным образом, для тестирования.

--https-enforce=mode
Устанавливает, как обрабатывать URL-адреса, у которых не указана явно схема (у которых схема не https://) (mode по умолчанию: none)

mode=none
Использовать в URL без схемы режим HTTP. В рекурсивной операции будет использоваться схема родительского документа.

mode=soft
Вначале попробовать HTTPS если схема HTTP или не указана. При ошибке производить возврат к резервному HTTP.

mode=hard
Использовать только HTTPS, без разницы указана ли схема HTTP или нет. Не производить возврата к резервному HTTP.


Опции плагинов

--list-plugins
Напечатать список всех доступных плагинов и завершить работу.

--local-plugin=file
Загрузить файл как плагин.

--plugin=name
Загрузить плагин с указанным именем из каталогов плагинов указанных в конфигурации.

--plugin-dirs=directories
Установить директории плагинов. Каталоги плагинов в списке разделяются запятыми.

--plugin-help
Напечатать справку по всем загруженным плагинам.

--plugin-opt=option
Указать специфичные для плагина параметры

Параметры плагинов "option" указываются в формате <plugin_name>.<option>[=value].

Окружение: прокси-серверы

Wget2 поддерживает прокси-серверы для извлечения через оба протокола, HTTP и HTTPS. Стандартный способ указать местоположение прокси, которое распознает WGET, использует следующие переменные среды:

  • http_proxy
  • https_proxy

Если указано, переменные http_proxy и https_proxy должны содержать URL -адреса прокси для соединений HTTP и HTTPS соответственно.

no_proxy

Эта переменная должна содержать разделенный запятой список доменов, для которого не следует использовать прокси-серверы. Например, если значение no_proxy является .example.com, прокси не будет использоваться для извлечения документов с *.example.com.

Коды завершения

WGET2 может вернуть один из нескольких кодов ошибок, если он столкнется с проблемами.

0 не было проблем.
1 общий код ошибки.
2 ошибка разбора. Например, ошибка при разборе параметров командной строки или файлов .wget2rc или .netrc ...
3 ошибка ввода/вывода файла.
4 сбой сети.
5 Ошибка проверки SSL.
6 Имя пользователя/сбой аутентификации пароля.
7 ошибка протокола.
8 Сервер ответил кодом ошибки.
9 Общедоступный ключ отсутствует в Keyring.
10 Проверка подписи не удалась.

За исключением 0 и 1, коды выхода с низким уровнем числа имеют приоритет над более высокими номерами, когда встречаются множественные типы ошибок .

Файл запуска

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

В то время как .WGET2RC является основным файлом инициализации, используемым GNU WGET2, не очень хорошая идея хранить пароли в этом файле.
Это связано с тем, что файл запуска может быть публично читабелен или помещен в архив при управлении версиями. Вот почему WGET2 также читает содержимое файла $Home/.NETRC, когда это необходимо.

Файл .WGET2RC следует очень похожим синтаксису для .WGETRC, который читается GNU WGET. Он отличается только в тех местах, где параметры командной строки варьируются между wget1.x и wget2.

Расположение Wget2rc

При инициализации WGET2 попытается прочитать «глобальный» файл запуска, который по умолчанию расположен по адресу /usr/local/etc/wget2rc' (или какой -то префикс, отличный от/usr/local', если Wget2 не был установлен там). Глобальный файл запуска полезен для системных администраторов для обеспечения соблюдения политики по умолчанию, такой как установление пути в хранилище сертификатов, предварительная загрузка списка HSTS и т.д.

Затем Wget2 будет искать файл инициализации пользователя. Если пользователь использовал опцию командной строки --config, Wget2 попытается загрузить файл, на который он указывает. Если файл не существует, или если его нельзя прочитать, WGET2 не предпримет дальнейших попыток прочитать какие-либо файлы инициализации.

Если установлена переменная среды WGET2RC, WGET2 попытается загрузить файл из указанного пути. Если файл не существует, или если его нельзя прочитать, WGET2 не предпримет дальнейших попыток прочитать файл инициализации.

Если, -config не пройден, а WGET2RC не установлен, WGET2 попытается загрузить файл инициализации пользователя из местоположения, как определено в спецификации базового каталога XDG. Он будет читать первый, и только первый файл, который он находит из следующих мест:

  1. $XDG_CONFIG_HOME/wget/wget2rc

  2. $HOME/.config/wget/wget2rc

  3. $HOME/.wget2rc

Расположение файла инициализации в $home/.wget2rc устарело. Если там найден файл, WGET2 распечатает предупреждение об этом. Поддержка чтения из этого файла будет удалена в будущем.

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

Ошибки

Вы можете отправить отчеты об ошибках через The Gnu Wget2 Tracker (https://gitlab.com/gnuwget/wget2/issues).

Прежде чем фактически отправить отчет об ошибке, попробуйте следовать нескольким простым рекомендациям.

  1. Пожалуйста, постарайтесь выяснить, что поведение, которое вы видите, действительно является ошибкой. Если Wget2 вылетает, это ошибка. Если Wget2 не ведет себя как задокументированное, это ошибка. Если все работает странно, но вы не уверены в том, как они должны работать, это вполне может быть ошибкой, но вы можете дважды проверить документацию и списки рассылки.

  2. Попробуйте воспроизвести ошибку в максимально простых обстоятельствах. Например. Если WGET2 дал сбой при загрузке WGET2 -RL0 -KKE -T5 --no-proxy https://example.com -o/tmp/log, вы должны попытаться увидеть, повторяется ли сбой, и будет ли произойти с более простым набором опций. Вы можете даже попытаться запустить загрузку на странице, где произошел сбой, чтобы увидеть, вызвала ли эта страница каким-то образом сбой.

Кроме того, хотя мне, вероятно, будет интересно узнать содержимое вашего файла .WGET2RC, просто сбросить его в сообщение отладки, вероятно, плохая идея. Вместо этого вы должны сначала попытаться посмотреть, повторяется ли ошибка если .WGET2RC ушел с дороги. Только если выясняется, что настройки .wget2rc влияют на ошибку, напишите мне соответствующие части файла.

  1. Пожалуйста, запустите wget2 с опцией -d и отправьте нам полученный вывод (или соответствующие его части). Если Wget2 был составлен без поддержки отладки, перекомпилируйте его. Гораздо легче отслеживать ошибки с помощью отладки.

ПРИМЕЧАНИЕ. Обязательно удалите любую потенциально конфиденциальную информацию из журнала отладки, прежде чем отправлять ее по адресу ошибки. -Д не будет изо всех сил собирать конфиденциальную информацию, но журнал будет содержать довольно полную транскрипцию связи Wget2 с сервером, которая может включать пароли и части загруженных данных. Поскольку адрес ошибки общедоступен, вы можете предположить, что все отчеты об ошибках видны для общественности.

  1. Если Wget2 сломался, попробуйте запустить его в отладчике, например, GDB What Wget Core и введите «where», чтобы получить Backtrace. Это может не сработать, если системный администратор отключил основные файлы, но он безопасен для попытки.

Автор

Wget2, написан Тимом Рюшеном tim.ruehsen@gmx.de
Wget 1.x, первоначально написан Hrvoje Nikthić hniksic@xemacs.org

Авторские права

Авторские права (с) 2012-2015 Tim Rühsen

Copyright (C) 2015-2022 Free Software Foundation, Inc.

Разрешение предоставляется копировать, распределять и/или изменять этот документ в соответствии с условиями бесплатной документации GNU Liсense, версии 1.3 или любой более поздней версии, опубликованной Free Software Foundation; без инвариантных секций, без текстов переднего покрытия и без текстов с обратным покрытием. Копия лицензии включена в раздел под названием “GNU Free Documentation License”.

GNU Wget2 Руководство пользователя



Похожие публикации