сортировка процессов по использованию процессора в cygwin

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

Команда не работает, потому что на вашем веб-сайте используется двойное перенаправление, которое сбивает с толку 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 , чтобы получить все нить, как задумано.

1
30.03.2019, 02:21
1 ответ

Вы можете использовать приведенную ниже команду для сортировки процессов в соответствии с использованием процессора:

ps axo %cpu,command | sort -nr
0
27.01.2020, 23:36

Теги

Похожие вопросы