Страница 82 / 118

Wget: [Назад] 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 [Вперед]

GaDiNa



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

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

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

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: 0) Cygwin,  1) GNUWin32 (учитывайте зависимости), 2) Wget + OpenSSL by GetGnuWin32, 3) by Bart Puype  4) by osspack32, 5) by Alex_Piggy, 6) 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 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) и многими другими протоколами на более низком уровне.
 
Разное.
GUI для Wgetа
 

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

Всего записей: 1503 | Зарегистр. 17-06-2003 | Отправлено: 12:39 08-11-2003 | Исправлено: VictorVG2, 22:57 06-01-2016
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
MisHel64
vitrzn
 
Нормально при настройке демона на нём включается именно пассивный режим потому, что тогда на серверном брандмауэре открываются только рабочие порты и соединение идёт по ним, а при активном режиме необходимо сначала удостоверится что соединение инициировано именно FTP-клиентом с данного IP, и только тогда открывать для него порты. Это сложнее и не всегда возможно, а потому обычно на серверах активный режим отключают. Что касается портов 20 (FTP, данные, TCP) /21 (FTP, управление, TCP) то FTP всегда их использует и по ним если стоит FTP-демон блокировку не ставят.
 
В данном случае вероятно админы сервера использовали активный режим в целях отладки, а после его отключили. В принципе стоит глянуть в командную строку с учётом Wget.ini/wgetrc.conf - нет ли там записи passive_ftp = off (ошибочный формат passiveftp = off) ? По умолчанию (если этот файл берётся из дистрибутива, на примере wgetrc.sample из пакеджа whget-1.14.2.txz FreeBSD 9.2) видно, что эта запись закоментирована:
 
# By default Wget uses "passive FTP" transfer where the client
# initiates the data connection to the server rather than the other
# way around.  That is required on systems behind NAT where the client
# computer cannot be easily reached from the Internet.  However, some
# firewalls software explicitly supports active FTP and in fact has
# problems supporting passive transfer.  If you are in such
# environment, use "passive_ftp = off" to revert to active FTP.
#passive_ftp = off
 
И тут как одна из возможных причин может быть что ваш провайдер изменил у себя настройки серверов. Но в любом случае разумнее добавить в файл настроек запись passive_ftp = on - как минимум будет меньше вероятных проблем с UNIX серверами. К примеру сервера ftp.freebsd.org , ftp.pcbsd.com вообще не работают с клиентом если там включён активный режим. Сообщения в логе:
 
Invalid PORT.
Retrying

 
с активным режимом FTP будут постоянными, и до команд CWD -> LIST дело никогда не дойдёт. Ребята уже на этом нарывались с Far NetBix и cURL-ом -"А почему с сервером ... у меня нет соединения?.".

Отправлено: 15:32 22-08-2013 | Исправлено: Victor_VG, 15:34 22-08-2013
sis_terr



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

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 13:20 06-09-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, sis_terr
К сожалению, не пойму в чем проблема. Постоянные адреса без скриптов и заморочек.
http://www.justfreevpn.com/free-vpn-password/us-free-vpn.gif
http://www.justfreevpn.com/free-vpn-password/uk-free-vpn.gif
http://www.justfreevpn.com/free-vpn-password/ca-free-vpn.gif

Код:
 
Server: &nbsp;<font color="blue">us.justfreevpn.com</font><br />
PPTP Username: &nbsp;justfreevpn<br />
PPTP Password: &nbsp;<img alt="USA Free VPN Account" src="/free-vpn-password/us-free-vpn.gif" style="margin-bottom: -3px;" /></p>
 

Если при помощи только wget (и ничего больше не надо делать), то одной строкой -  
wget -p "http://www.justfreevpn.com/" -A *.gif -e "robots=off" --cut-dirs=2 -nH
Если передать в консольную распознавалку - подумаю... Допишу до конца дня (когда найду подходящую распознавалку).
Добавлено:
Прикрутил GOCR (0.50) + Netpbm (10.63.99) get_vpn.zip Распознавание полу-автоматическое, если встречает то, что узнало как не-цифру - спрашивает.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 14:12 06-09-2013 | Исправлено: Alex_Piggy, 19:05 06-09-2013
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
да если б было у меня просто, то моего ума б хватило)
но не качает  
если по прямой ссылке зайти браузером то пишет
Forbidden
You don't have permission to access /free-vpn-password/uk-free-vpn.gif on this server.
Может это из-за того что у нас тут своя сеть VPN,
 хотя другие прямые ссылки скачиваются нормально
*
лог такой
--2013-09-06 14:27:20--  http://www.justfreevpn.com/free-vpn-password/uk-free-vpn.gif
Resolving www.justfreevpn.com... 108.163.184.238
Connecting to www.justfreevpn.com|108.163.184.238|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2013-09-06 14:27:21 ERROR 403: Forbidden.
*
сейчас ещё покопаюсь
*
(
что то странное, с прямым IP всё равно не качает
лог
--2013-09-06 14:38:26--  http://www.justfreevpn.com/
Resolving www.justfreevpn.com... 108.163.184.238
Connecting to www.justfreevpn.com|108.163.184.238|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html'
 
     0K .......... ......                                      16.8K=1.0s
 
2013-09-06 14:38:28 (16.8 KB/s) - `index.html' saved [16528]
 
Removing index.html since it should be rejected.
 
FINISHED --2013-09-06 14:38:28--
Downloaded: 1 files, 16K in 1.0s (16.8 KB/s)

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 14:27 06-09-2013 | Исправлено: sis_terr, 14:45 06-09-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sis_terr
Понял. Просто укажите referer.  
wget --referer="http://www.justfreevpn.com/" "http://www.justfreevpn.com/free-vpn-password/uk-free-vpn.gif"
Та команда, которую я Вам дал скачивает без проблем, так как при зеркалировании указывается реферер.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 14:43 06-09-2013
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy    с referer скачивается нормально  
Только не поняла почему с других сайтов скачивается по прямой ссылке,  
а этот какой то хитрый
*
ага, почитала что это за хитрость, ещё раз благодарю за помощь  

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 14:50 06-09-2013 | Исправлено: sis_terr, 14:55 06-09-2013
Linch



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Использовал раньше wget, но была версия совсем старая и решил обновить. Прочел тему в поисках различий между сборками (те которые указаны в шапке) для Windows 7. Конкретно не чего не нашел или возможно пропустил. Из того что все же нашлось, я так понял что версия от Bart Puype стабильная (1.11.4 - wget.exe (401408 bytes)), остальные более экспериментальные?

Всего записей: 464 | Зарегистр. 24-07-2001 | Отправлено: 17:07 08-09-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, Linch
Это зависит от того, что Вам нужно. Смотрите news.
Я бы считал последней стабильной версию от TumaGonx Zakkum. У Ray Satiro беты и релизы, но тяжелые. У меня - не согласованные изменения.  
Giuseppe Scrivano (текущий maintainer) очень сторожко относится к изменениям и предпочитает скорее не пропустить коммит чем допустить вероятность последующего бага.
CygWin - релиз 1.14 shared
GnuWin32 - Проект давно не обновлялся, последняя - релиз 1.11.4 shared
Ray Satiro (GetGnuWin32) - По ссылке в шапке бета 1.12, Более поздние релизы и беты shared
Bart Puype - Давно не обновлялся, последняя - релиз 1.11.4 static  
TumaGonx Zakkum (osspack32) - релиз 1.14 static
Alex_Piggy - nightly static.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 17:59 08-09-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
Linch
 
Кстати заметил что локали собранные osspack32 с последними сборками Alex_Piggy не распознаются. Ну, для меня это мелочь и я просто их выкинул.

Отправлено: 18:35 08-09-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Linch
Мне немного ранее рекомендовали вариант от osspack32, типа "все включено", можно просто пользоваться. Выложенный Victor_VG ca-bundle.crt залил сюда.

Отправлено: 18:47 08-09-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
Потребуется - список обновлю, но вроде пока отозванных сертификатов не капало...

Отправлено: 20:00 08-09-2013
Linch



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Отлично. Спасибо.
 
p.s. imho стоит это в шапку добавить
 
Skif_off
проморгал хех (я на этой сборке и остановился), ну зато Alex_Piggy какую полезную информацию подал в результате

Всего записей: 464 | Зарегистр. 24-07-2001 | Отправлено: 23:25 08-09-2013 | Исправлено: Linch, 23:25 08-09-2013
Pompeii

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какой конфигурационный файл использовать под Win7? wget.ini или .wgetrc? и в чем между ними разница?
 
А так же почему не работает directory-prefix = Download,  когда пытаюсь добавить в wget.ini\wgetrc?
 
И если не сложно подскажите где глянуть пример конфиг файлов (хороших) ?

Всего записей: 10 | Зарегистр. 27-08-2013 | Отправлено: 10:24 09-09-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
Victor_VG
Спасибо, поправил. Заодно сделал подхват файла сертификата. Скоро дособирается.
 
Pompeii
Может быть потому, что запись в .wgetrc должна иметь вид dir_prefix = Download ?
Разницы между wget.ini и .wgetrc для Wget нет. Разве что .wgetrc ищется первым. Сугубо вопрос привычки к смыслам имен файлов.
 
По поводу хороших конфиг файлов - не подскажу. Универсальные настройки - по умолчанию, а все остальное надо смотреть по месту.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 13:26 09-09-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
Спасибо! Соберётся - возьму. Как говорится "Кто последний за колбасой?"
 
И ещё - когда будете править шапку, то поправьте для cURL список его возможностей - протоколы там "зашиты" libcurl, и к примеру у меня она собрана как в BSD, так и Дирком (v7.31.0) под винду с поддержкой dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp. Для работы хватает.
 
Pompeii
 
Ну к примеру у меня так настроено и сделано это специально, т.к. вгет можно вызвать из любого места, и каталог приёмник также может быть произвольный.
 

Отправлено: 14:12 09-09-2013 | Исправлено: Victor_VG, 14:17 09-09-2013
Pompeii

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня почему не подхватывается файл конфига когда я запускаю wget не из его папки. Из за чего может быть такое?

Всего записей: 10 | Зарегистр. 27-08-2013 | Отправлено: 09:35 10-09-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Pompeii
 
По умолчанию он ищет их в каталоге приложения или в системных /etc. Иначе надо прямо задавать в ключах его место нахождение.

Отправлено: 19:04 10-09-2013 | Исправлено: Victor_VG, 19:21 10-09-2013
Linch



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сегодня пытался скачать файл с опцией continue = on & content_disposition = on. Так вот, если имя файла не определенно и определяется с помощью content_disposition, то докачака (-с) не срабатывает. Это я что-то не правильно делаю или это в порядке вещей?

Всего записей: 464 | Зарегистр. 24-07-2001 | Отправлено: 22:40 10-09-2013 | Исправлено: Linch, 22:48 10-09-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, Linch
Если у Вас версией 1.11.4 качалось нормально, то, скорее всего,  news 4 пункт - "** Fix a regression when -c and --content-disposition are used together.". Этот баг появился в 1.13 и исправили его год назад (после релиза 1.14).
Если не качалось - то скорее дело в сервере (не позволяет докачку).

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 22:50 10-09-2013 | Исправлено: Alex_Piggy, 22:52 10-09-2013
Linch



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Я уверен что там есть докачка т.к. без ---content-disposition оно докачивает с места обрыва.
Что-то кажется мне в версии от TumaGonx Zakkum просто нет этого багфикса
 
А в твоем wget_ruboard он включен?
 
Важный же фикс, а такая засада с билдами можно конечно качать и потом переименовывать ручками уже по готовому, но это не удобно.

Всего записей: 464 | Зарегистр. 24-07-2001 | Отправлено: 21:21 11-09-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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

Сохранено: 09.06.2016 19:45:39 (c) xForumSaver