Что именно означает «черный список» в wget?

Что именно означает «черный список» в wget?

Я запускаю следующую команду

wget -d -e robots=off --recursive -l 10 -w 6.8 -t 3 -nc --random-wait -T 10 -R "*.js, *.css, *.jsp, *.mp3, *.mp4, *.swf, *.apk, *.pdf, *.css, *.doc, *.docx, *.xls, *.xlsx, *.jpg, *.jpeg, *.gif, *.JPG, *.JPEG, *.png, *.PNG" --server-response http://www.wuli.ac.cn/CN/volumn/home.shtml --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" -a wget_log &

Который отображает параметры, как показано ниже,

Setting --recursive (recursive) to 1
Setting --level (reclevel) to 10
Setting --wait (wait) to 6.8
Setting --tries (tries) to 3
Setting --no (noclobber) to 1
Setting --random-wait (randomwait) to 1
Setting --timeout (timeout) to 10
Setting --reject (reject) to *.js, *.css, *.jsp, *.mp3, *.mp4, *.swf, *.apk, *.pdf, *.css, *.doc, *.docx, *.xls, *.xlsx, *.jpg, *.jpeg, *.gif, *.JPG, *.JPEG, *.png, *.PNG
Setting --server-response (serverresponse) to 1
Setting --user-agent (useragent) to Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0
Setting --append-output (logfile) to wget_log

Но затем я получаю много отладочной информации, например, такую:

Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3290.shtml".
Already on the black list.
Decided NOT to load it.
Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3290.shtml".
Already on the black list.
Decided NOT to load it.
Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3291.shtml".
Already on the black list.
Decided NOT to load it.
Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3293.shtml".
Already on the black list.
Decided NOT to load it.
Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3294.shtml".
Already on the black list.
Decided NOT to load it.
Deciding whether to enqueue "http://www.wuli.ac.cn/CN/column/column3290.shtml".
Already on the black list.
Decided NOT to load it.

Я не совсем понимаю, почему я заношу их в «черный список».

решение1

Вы не заносите в черный список какую-либо веб-страницу, это wgetделает система.

По сути, любая загружаемая веб-страница wgetзаносится в «черный список», который должен предотвратить повторную загрузку одной и той же страницы.

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

Впервые эта проблема была упомянута в 2012 году в GNU WGET. ошибка №37986: перенаправление на тот же URL-адрес предотвращает рекурсию и было реализовано исправление, которое, по-видимому, не вошло в ваш дистрибутив Linux или было утеряно за столько лет.

Единственное решение, помимо поиска другого загрузчика или версии wget, указано вэтот ответ.

Однако, если вы готовы перекомпилировать wget вручную, исправление вашей проблемы может быть тривиальным: просто добавьте эти 2 строки в src/recur.c.

            status = retrieve_url (url_parsed, url, &file, &redirected, referer,
                                   &dt, false, i, true);
+
+         if (redirected)
+                 hash_table_remove (blacklist, url);

            if (html_allowed && file && status == RETROK
                && (dt & RETROKF) && (dt & TEXTHTML))

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

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

Связанный контент