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을 수동으로 다시 컴파일하려는 경우 문제 수정은 간단할 수 있습니다. 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))

이렇게 하면 리디렉션될 때마다 블랙리스트에서 현재 페이지가 제거되어 문제가 해결됩니다.

경우에 따라 무한 루프가 발생할 수 있으므로 제출 준비가 완료된 패치가 아니라는 점에 유의하세요.

관련 정보