Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

GaDiNa



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
 
GNU Wget

GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS, FTP и FTPS (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP).
 

| Офсайт | Википедия | Фрешмит | Опен-хаб (бывш. Охлох) | Мануал | Ман | Ман (русск., устар.) | --help (русск.) |

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: Cygwin | GNUWin32 (учитывайте зависимости) | Wget + OpenSSL by GetGnuWin32  | by TumaGonx Zakkum (он же osspack32 и The Moluccas  |  by Jernej Simoncc (32 и 64 бит отдельные пакеты).
 
Литература.
Popkov. Параметры программы wget
В. А. Петров. Wget — насос для Интернета
 
FAQ
 
Q: Можно ли простым перебором загрузить страницы (допустим) с первой по сотую, если их адреса:  
http://example.org/index?page=1
http://example.org/index?page=2
...
http://example.org/index?page=100
A: Вэ-гет не умеет делать инкрементальный перебор, поскольку это умеет делать любая командная оболочка. На Баше это делается так:
$ wget -E "http://example.org/index?page="{1..100}
Еще раз отметьте, {1..100} — это синтаксическая конструкция Баша, а не Вэ-гета. Эквивалентной этой будет команда:
$ for i in {1..100}; do wget -E "http://example.org/index?page=$i"; done
Или для cmd.exe:
for /l %i in (1,1,100) do wget -E "http://example.org/index?page=%i"
 
Q: А как собственно сайт целиком-то загрузить?
A: $ wget -mpEk "http://example.org"
Это, наверное, самый ходовой набор ключей, но вам, может быть, более подойдут другие. Что значит каждый — легко узнать в мане.
 
Q: Я хочу загрузить с сайта, требующего авторизации. Что делать?
A: Проще всего кинуть куда-нибудь файл с нужными (но лишние не помешают) куками в нетскэйповском формате, затем воспользоваться ключом --load-cookies.
$ wget --load-cookies cookies.txt бла-бла # файл cookies.txt в текущей директории
У Файрфокса куки в требуемом виде можно получить, воспользовавшись расширениями «Export Cookies» либо «Cookie.txt»; у Хрома — «Cookie.txt export»
 
Q: Не-ASCII символы сохраняются в именах файлов как %D0%A5%D1%83%D0%B9 (или того хуже), хотя локаль юникодная.
A: Укажите ключ --restrict-file-names=nocontrol,unix или --restrict-file-names=nocontrol,windows соответственно.
Если у вас Windows и локаль не юникодная — используйте вариант от Alex_Piggy с ключом --local-filesystem-encoding=ENCODING, где ENCODING — имя кодировки локали в терминах iconv. Текущую локаль cmd.exe можно проверить при помощи команды chcp. Для русской кириллицы в Windows обычно используется CP866.
 
Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату?
A: При помощи одного только Wget’а — нет.  Возможна обработка получаемых заголовков файла при помощи средств командной оболочки. Пример для cmd.exe.
 
Q: Можно ли приказать Вэ-гету докачать файл, но только если он не изменился.
A: Нет, нельзя. Сочетание ключей -cN (--continue --timestamping), как можно было бы предположить, нужного эффекта не даст — «докачает» даже если файл изменился — получите в итоге мусор.
 
Q: Можно ли при рекурсивной загрузке ограничится только ссылками, содержащими параметр lang=ru, т.е. грузить:
http://example.org/index?lang=ru
http://example.org/page?id=1001&lang=ru
http://example.org/file?id=60&lang=ru&format=dvi
и не грузить:
http://example.org/index?lang=en
http://example.org/about?lang=fr
и т.д.
A: Для версий < 1.14 нет такой возможности.  
Общий вид URI: <протокол>://<логин>:<пароль>@<хост>:<порт>/<путь>?<параметры>#<якорь>. Так вот ключи -I (--include-directories) и -X (--exclude-directories) относятся только к пути, но не к параметрам.
В версиях > 1.14 возможно при использовании ключей --accept-regex / --reject-regex. Пример: --reject-regex "lang=[^r][^u]"
 
Q: Можно ли средствами Вэ-гета ограничить перечень загружаемых файлов по дате модификации (новее чем, старше чем)?
A: Нет такой возможности.
 
Q: Можно ли при рекурсивной или множественной загрузке произвольно задать целевые пути и/или имена файлов на основе пути/имени по-умолчанию (применить транслитерацию, отбросить хвостовую часть) или хотя бы независимо (сгенерировать случайно или по счетчику)?
A: Нет.
 
Q: То — нельзя, это — невозможно. Почему все так плохо?
A: Потому что Вэ-гет на настоящий момент — базовая программа, предоставляющая только самый базовый функционал. Если вы уперлись в потолок ее возможностей, просто смените ее на другой инструмент. Из неинтерактивных свободных программ наиболее функциональными будут:
aria2c — для загрузки одиночных файлов по HTTP(S), FTP, бит-торренту;
httrack — для рекурсивной загрузки («зеркалирования») веб-сайтов;
lftp — для работы по FTP, FTPS, SFTP, FISH, а также с листингами, отдаваемыми по HTTP(S) (пример).
curl — для работы с одиночными файлам по HTTP(S), FTP(S) и многими другими протоколами на более низком уровне.
wput — клон wget для аплоада файлов на удаленные FTP(S) сервера.
axel — клон wget для многопоточной загрузки одиночных файлов по протоколам HTTP(S) и FTP(S). Порты для Windows: 2.4, 2.16.1
 
Разное.
GUI для Wget’а
 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.

Всего записей: 1531 | Зарегистр. 17-06-2003 | Отправлено: 13:39 08-11-2003 | Исправлено: juvaforza, 17:27 01-09-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
wget_x86 --no-check-certificate https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
--2019-04-07 21:15:46--  https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
Disabling SSL due to encountered errors.
 
wget_x64 --no-check-certificate https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
--2019-04-07 21:15:59--  https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
Disabling SSL due to encountered errors.

 
OpenSSL не хватает, по линку одни Installer-ы
 
а portable нету?

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 15:17 07-04-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VecH
 
SSL х86 и х64. Положить рядом с бинарником вгет, 100% работоспособности не гарантирую. Тут вроде все видимые зависимости я подобрал.

Всего записей: 24837 | Зарегистр. 31-07-2002 | Отправлено: 15:48 07-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Victor_VG

Код:
d:\!_DATA\Dropbox\Progs\wget\1203\x64>dir
 Том в устройстве D имеет метку DATA
 Серийный номер тома: 44EC-ACA2
 
 Содержимое папки d:\!_DATA\Dropbox\Progs\wget\1203\x64
 
07.04.2019  22:24    <DIR>          .
07.04.2019  22:24    <DIR>          ..
07.04.2019  22:24           139 520 GoogleChromeStandaloneEnterprise.msi
07.04.2019  22:24            19 984 GoogleChromeStandaloneEnterprise.msi.1
27.02.2019  02:12         3 406 336 libcrypto-1_1-x64.dll
27.02.2019  02:12           681 472 libssl-1_1-x64.dll
10.06.2016  04:53            87 888 vcruntime140.dll
07.04.2019  20:50         4 928 032 wget_x64.exe
               6 файлов      9 263 232 байт
               2 папок  153 362 153 472 байт свободно
 
d:\!_DATA\Dropbox\Progs\wget\1203\x64>wget_x64.exe --no-check-certificate https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
--2019-04-07 22:24:38--  https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
что то не работает блин

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 16:25 07-04-2019
los

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, VecH,
Почему вы используете ключ --no-check-certificate?

Всего записей: 709 | Зарегистр. 08-09-2001 | Отправлено: 18:24 07-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
потому что с некоторых пор провайдеры вмешивались в траффик не меняя страничку или содержимое
потом спустя время вроде бы нормализовалось
а с недавних пор понадобились данные с сайтов с самоподписными сертификатами, поэтому я сертификаты игнорирую, а данные качаются по несколько раз в сутки скриптами

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 18:45 07-04-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
 
Я им не пользуюсь, более того, в основном использую cURL, а вгет - только если иного выхода нет.

Всего записей: 24837 | Зарегистр. 31-07-2002 | Отправлено: 18:48 07-04-2019
los

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понятно.
VecH,

Цитата:
а с недавних пор понадобились данные с сайтов с самоподписными сертификатами

можно ссылку на файл с такого сайта?

Всего записей: 709 | Зарегистр. 08-09-2001 | Отправлено: 19:02 07-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
это корпоративное гавно которое или внутри VPN сети, а если извне, то там фильтры по IP адресам стоят
 
Victor_VG
да, тоже потихонечку все на cURL перевожу, он еще и вроде бы socks умеет, как раз заблоченные роскомпозором обходить через мой внешний socks прокси

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 19:08 07-04-2019
los

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VecH,
не вопрос

Цитата:
он еще и вроде бы socks умеет

wget вроде бы тоже можно собрать с поддержкой socks.

Всего записей: 709 | Зарегистр. 08-09-2001 | Отправлено: 20:07 07-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
у меня время сборок прошло, надоело уже, и так 15 лет с линуксом бок о бок
 
сейчас максимум собираю openwrt прошивки в свободное время, для каких нить китайских роутеров
 
Не хочу парится со всем этим делом, проще взять cURL, изучая потихонечку, видно что функционал тоже на высоком уровне

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 20:21 07-04-2019
los

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VecH,
кому как удобнее или привычнее, wget, curl, fetch, ftp ... - без разницы, лишь бы нужные вам задачи выполняли.

Всего записей: 709 | Зарегистр. 08-09-2001 | Отправлено: 20:35 07-04-2019
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
wget вроде бы тоже можно собрать с поддержкой socks.  

Можно было когда то, да и то не для Windows.
Вопрос тут уже многократно обсуждался
http://forum.ru-board.com/topic.cgi?forum=5&topic=10066&start=2640#21

Всего записей: 4151 | Зарегистр. 05-01-2006 | Отправлено: 10:43 08-04-2019 | Исправлено: mithridat1, 10:47 08-04-2019
los

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1,

Цитата:
Можно было когда то, да и то не для Windows.  

понятно.
 

Всего записей: 709 | Зарегистр. 08-09-2001 | Отправлено: 11:24 08-04-2019
ozr1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Цитата:
https://eternallybored.org/misc/wget/ - Wget 32/64 бит пересобран заново, ошибка запуска Wget64 связанная с отсутствием в поставке libwinpthread-1.dll устранена. С страницы загрузки:  

Цитата:
note: the original 64-bit binaries required libwinpthread-1.dll, please download again if your wget.exe doesn't work  

Теперь там написано так:

Цитата:
there's a problem with https connections in this version - I will post an updated version as soon as I resolve it

То есть, о проблеме https-доступа в версии 1.20.3 известно, но она пока не исправлена. Кстати, у меня эта проблема проявляется на том компе, где не установлен OpenSSL. А на том, где стоит OpenSSL (конкретно у меня сейчас стоит  версия 1.0.2r: потребовалась для компиляции сборок), пока что её ни разу не наблюдал. Ранее грешил на то, что секретчики на работе (ибо проблема наблюдается именно на рабочем компе) перехватывают SSL-трафик, подменяя корневой сертификат: всем принудительно в хранилище сертификатов корневых центров сертификации был добавлен самоподписанный сертификат...
 
Соответственно, на работе пока откатил wget на версию 1.20

Всего записей: 143 | Зарегистр. 05-07-2015 | Отправлено: 04:30 10-04-2019 | Исправлено: ozr1, 04:51 10-04-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ozr1
 
Уловил. Тоже пока не обновляю.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 24837 | Зарегистр. 31-07-2002 | Отправлено: 07:51 10-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
пока откатил wget на версию 1.20

аналогично

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 08:49 10-04-2019
FUTURiTY

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1

Цитата:
Релиз GNU Wget 1.20.3

А чем от обычного Wget отличается который 1.11.4.1 ?
Также при запуске на Win2k3 x32 ошибка "Ws2_32.dll отсутствует / не найден"

Всего записей: 2721 | Зарегистр. 24-04-2007 | Отправлено: 12:06 15-04-2019 | Исправлено: FUTURiTY, 10:25 16-04-2019
Kovu



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Автор порта под винду утверждает, что ему удалось победить глюки openssl.
 
GNU Wget 1.20.3: x32: exe zip x64: exe zip

Всего записей: 424 | Зарегистр. 23-07-2001 | Отправлено: 17:44 23-04-2019
VecH



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Видимо недопобедил

Цитата:
d:\1>wget_x86 --no-check-certificate https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
--2019-04-24 01:23:14--  https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
Disabling SSL due to encountered errors.
 
d:\1>wget_x86 https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
--2019-04-24 01:23:24--  https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi
Disabling SSL due to encountered errors.

DLL я подкинул в папку, все равно ошибка
 
в общем итог:
при запуске wget x86 в Win10 x64 приводит к ошибке выше
при запуске wget x64 в Win10 x64 скачивает без проблем

Всего записей: 2343 | Зарегистр. 18-02-2003 | Отправлено: 19:26 23-04-2019 | Исправлено: VecH, 19:30 23-04-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kovu
VecH
 
Это "не глюки OpenSSL", а особенность алгоритма поиска SSL сертификатов Wget -  первично Wget создавался под архитектуры UNIX/LINUX и априори считалось что файл SSL-сертификатов лежит в каталоге /usr/home/etc рядом с .wgetrc, а на винде с её традиционным M$-им бардаком люди располагают его в произвольном месте и в значительном числе случаев ОС не может его найти, а виндовый порт предусматривает только одно место откуда данный файл корректно считывается - каталог в котором находится исполняемый файл Wget.exe и только при условии что он является рабочим каталогом его процесса.  
 
В ином случае шансы что Wget.exe найдёт файл сертификатов малы.
 
Но, можно выйти из положения используя ключ --ca-certificate и задав имя файла сертификатов (по умолчанию curl-ca-bundle.crt) с полным путём к нему:  
 
--ca-certificate="<dir>\curl-ca-bundle.crt"
 
путь в виде <dir>\curl-ca-bundle.crt для исключения ошибок вызываемых наличием пробелов в именах должен быть взят в кавычки или должен быть указан в формате DOS 8.3. Так же допустимо в качестве пути к файлу сертификатов использовать переменные среды которые должны быть определены до вызова Wget.exe .

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 24837 | Зарегистр. 31-07-2002 | Отправлено: 20:14 23-04-2019 | Исправлено: Victor_VG, 20:15 23-04-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru