Рекурсивная загрузка ссылок с проверкой безопасности, приводящая к перенаправлению цикла.
Команда не работает, потому что на вашем веб-сайте используется двойное перенаправление, которое сбивает с толку wget. Давайте посмотрим на подробный журнал, который можно вызвать с помощью параметра - debug
(ненужные строки удалены):
---request begin---
GET / HTTP/1.1
---response begin---
HTTP/1.1 302 Found
Location: https://community.lego.com/auth/securityCheck?action=bounce&referrer=https%3A%2F%2Fcommunity.lego.com%2F
(...)
---request begin---
GET /auth/securityCheck?referrer=https%3A%2F%2Fcommunity.lego.com%2F HTTP/1.1
---response begin---
HTTP/1.1 302 Found
Location: https://community.lego.com/
(...)
Deciding whether to enqueue "https://community.lego.com/".
Already on the black list.
Decided NOT to load it.
Redirection "https://community.lego.com/" failed the test.
Как видно, он возвращает ваш запрос на некоторую «проверку безопасности» и обратно. Wget не ожидает повторного перенаправления на ту же страницу, с которой вы пришли, и считает ее занесенной в черный список, не переходя по ссылкам.
Хотя вполне возможно, что есть способ сделать некоторую магию cookie, чтобы исключить перенаправление проверки безопасности, я не знаю, как это сделать.
Однако, если вы хотите перекомпилировать 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))
Это приведет к удалению текущей страницы из черного списка при каждом перенаправлении, что решит вашу проблему.
Имейте в виду, что в некоторых случаях он может запускать бесконечные циклы, поэтому это не готовый к отправке патч.
После того, как вы перестроили wget, вы можете просто использовать что-то вроде
wget -np -nd -r -k -p
, чтобы получить все нить, как задумано.
Вы можете использовать приведенную ниже команду для сортировки процессов в соответствии с использованием процессора:
ps axo %cpu,command | sort -nr