Was genau bedeutet „schwarze Liste“ in wget?

Was genau bedeutet „schwarze Liste“ in wget?

Ich führe den folgenden Befehl aus

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 &

Die Optionen werden wie folgt angezeigt:

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

Aber dann bekomme ich viele Debug-Ausgaben wie die folgende:

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.

Ich verstehe nicht ganz, wo ich diese auf die „schwarze Liste“ setze.

Antwort1

Sie setzen keine Webseite auf die schwarze Liste, das ist wgetes, was den Ausschlag gibt.

Grundsätzlich wird jede heruntergeladene Webseite wgetin eine „schwarze Liste“ eingetragen, die verhindern soll, dass die gleiche Seite zweimal heruntergeladen wird.

Das Problem tritt auf Webseiten auf, die eine doppelte Umleitung verwenden, wobei die Anfrage an eine „Sicherheitsprüfung“ und wieder zurückgeschickt wird. Wget rechnet nicht damit, ein zweites Mal auf dieselbe Seite umgeleitet zu werden, findet sie auf der schwarzen Liste und überspringt daher den Download dieser Seite.

Dieses Problem wurde erstmals 2012 in GNU WGET erwähnt. Fehler Nr. 37986: Umleitung zur gleichen URL verhindert Rekursion und es wurde ein Fix implementiert, der Ihre Linux-Distribution anscheinend nicht erreicht hat oder nach so vielen Jahren verloren gegangen ist.

Die einzige Lösung, neben der Suche nach einem anderen Downloader oder einer anderen wget-Version, wird erwähnt indiese Antwort.

Wenn Sie jedoch bereit sind, wget manuell neu zu kompilieren, kann die Lösung Ihres Problems trivial sein: Fügen Sie einfach diese beiden Zeilen hinzu 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))

Dadurch wird die aktuelle Seite bei jeder Weiterleitung aus der schwarzen Liste entfernt und Ihr Problem behoben.

Beachten Sie, dass es in einigen Fällen möglicherweise Endlosschleifen auslösen kann. Es handelt sich daher nicht um einen einreichungsbereiten Patch.

verwandte Informationen