curl, wget не возвращают ничего

Вопрос или проблема

Я пытаюсь выполнить curl -I zomato.com | head -n 1

и не получаю никакого ответа.

% Всего % Получено % Передано Средняя скорость Время Время Время Текущий Загружено Загружено Всего Проведено Осталось Скорость 
0  0    0    0     0   0     0       0   --:-  -:--     0:05:29 --:-   -:--     0 

Защищен ли сайт брандмауэрами?

Даже wget не работает на этом сайте. Другие сайты, такие как google.com, возвращают 200 ответ, как и ожидалось.

$ curl -I --max-redirs 1 "https://www.zomato.com/" 2>/dev/null  | grep "^location:" | awk '{print $2}'
https://www.zomato.com/some-location-in-mongolia

так что…

$ newURL=$(curl -I --max-redirs 1 "https://www.zomato.com/" 2>/dev/null  | grep "^location:" | awk '{print $2}'| grep -o ".*[a-z]"); curl -I "$newURL" | head -n 1
  % Всего    % Получено % Передано  Средняя скорость   Время    Время     Время  Текущий
                                 Загружено  Загружено   Всего   Проведено    Осталось  Скорость
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
HTTP/2 200 

не уверен, разрешено ли помогать с парсингом на этом форуме, но;

wget --header "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" --header "Host: www.zomato.com" --header "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "https://www.zomato.com/bangalore/restaurants/biryani"

Ответ или решение

Проблема, с которой вы столкнулись при использовании инструментов curl и wget, может быть связана с несколькими факторами. Давайте рассмотрим возможные причины и решения.

1. Блокировка запросов

Сайты, такие как Zomato, могут использовать различные механизмы защиты, чтобы предотвратить автоматизированные запросы. Один из таких механизмов – блокировка запросов, исходящих от инструментов командной строки, таких как curl и wget. Это может быть сделано с помощью анализа заголовков User-Agent. Чтобы обойти эту блокировку, можно задать User-Agent, повторяющий браузер. Например:

curl -A "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" -I "https://www.zomato.com/"

2. Использование HTTPS

Обратите внимание, что вы используете HTTPS. Убедитесь, что curl и wget поддерживают HTTPS. Вы также можете проверить, работает ли сайт с использованием браузера, чтобы исключить проблемы с доступом к самому сайту.

3. Перенаправления

Если сайт делает перенаправления (например, с http на https), вам нужно убедиться, что curl или wget обрабатывают эти перенаправления должным образом. Для curl вы можете использовать флаг -L, чтобы следовать перенаправлениям:

curl -L -I "https://www.zomato.com/"

4. Таймауты

Если сайт не отвечает в разумные сроки, попробуйте увеличить таймауты:

curl --max-time 30 -I "https://www.zomato.com/"

5. Анализ ответа

Вы можете использовать curl с подробным выводом, чтобы увидеть, какие заголовки и ответы приходят от сервера:

curl -v -I "https://www.zomato.com/"

6. Проверка wget

Аналогично, для wget вы можете настроить User-Agent и проверить работу команды:

wget --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" "https://www.zomato.com/"

Заключение

Если все перечисленные шаги не помогли, вероятно, сайт Zomato активно защищается от парсинга и scraping. В этом случае, возможно, вам потребуется рассмотреть альтернативные методы доступа к данным, такие как использование официального API, если такая возможность существует. Убедитесь, что вы соблюдаете условия использования сайта.

Оцените материал
Добавить комментарий

Капча загружается...