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 中首次被提及 bug #37986:重定向到相同的 url 可防止遞歸 並實施了修復,但顯然該修復並未到達您的 Linux 發行版,或者在多年後丟失了。

除了尋找另一個下載器或 wget 版本之外,唯一的解決方案在這個答案

但是,如果您願意手動重新編譯 wget,那麼解決您的問題可能很簡單:只需將這兩行添加到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))

每次重定向時,這都會將當前頁面從黑名單中刪除,從而解決您的問題。

請注意,在某些情況下它可能會觸發無限循環,因此它不是一個可提交的補丁。

相關內容