Шпаргалка: wget и curl
Два самых популярных инструмента командной строки для скачивания файлов и взаимодействия с сетью - это wget и curl. Они часто выполняют похожие задачи, но имеют разную философию.
curl (Client URL) - про гибкость и протоколы.Он поддерживает множество протоколов и идеален для работы с API, отладки и сложных запросов. Выводит данные в консоль (stdout) по умолчанию.
wget (World Wide Web Get) - про надёжность и скачивание. Он надежен, отлично справляется с нестабильным соединением и умеет скачивать сайты целиком (рекурсивно). Сохраняет в файл по умолчанию.
Таблица шпаргалки:
| Задача | curl | wget |
|---|---|---|
| Просто скачать файл | curl -O URL | wget URL |
| Сохранить с другим именем | curl -o file.zip URL | wget -O file.zip URL |
| Докачка (Resume) | curl -C - -O URL | wget -c URL |
| Следовать за редиректом | curl -L URL | (Автоматически) |
| Показать заголовки (Headers) | curl -I URL | wget -S --spider URL |
| Игнорировать SSL (Insecure) | curl -k URL | wget --no-check-certificate URL |
| Авторизация (Basic) | curl -u user:pass URL | wget --user=user --password=pass URL |
| Прокси | curl -x proxy:port URL | wget -e use_proxy=yes -e http_proxy=... |
Примеры
1. Узнать свой внешний IP
Самый простой способ быстро проверить выход в сеть и свой IP-адрес.
curl:
curl icanhazip.comwget:
wget -qO- ifconfig.me2. Скачивание файла (Логотип Google)
Попробуем скачать реальный файл - логотип Google.
curl (нужен флаг -O, чтобы сохранить файл):
curl -O https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.pngwget (просто работает):
wget https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png3. Посмотреть погоду (ASCII-графика)
Один из самых популярных примеров использования curl для консольных утилит. Сервис wttr.in возвращает погоду в красивом текстовом формате.
curl wttr.in/Moscow
# Ниже пример по текущей локации, вычисляеться по ip адресу.
curl wttr.in4. Тестирование HTTP-запросов (HttpBin)
Для разработчиков. Сайт httpbin.org - это специальный сервис, который просто "эхает" (возвращает) вам то, что вы ему отправили.
Посмотреть заголовки (Headers) сайта: Узнаем, на каком сервере работает сайт, без скачивания содержимого.
curl -I https://httpbin.org/get
Отправить JSON (POST запрос): Отправим тестовые данные и увидим, как сервер их принял.
curl -X POST "https://httpbin.org/post" -H "Content-Type: application/json" -d "{"username": "dev_user", "status": "active"}"5. Работа с редиректами (Github)
Github перенаправляет http запросы на https. Посмотрим, как инструменты реагируют на это.
curl (без флага -L ничего не покажет, только сообщит "Moved Permanently"):
# Не сработает как ожидается
curl http://github.com
# Сработает редирект
curl -L http://github.comwget (умный, перейдет сам):
wget http://github.com7. Имитация браузера (User-Agent)
Некоторые сайты могут блокировать стандартные запросы от роботов. Нужно притвориться обычным браузером. Для этого можно добавить User-Agent:
Википедия обычно не блокирует, пример учебный.
wget:
wget --user-agent="Mozilla/5.0" https://ru.wikipedia.org/robots.txtcurl:
curl -A "Mozilla/5.0" https://ru.wikipedia.org/robots.txt