Библиотека сайта rus-linux.net
HTTPie - современный HTTP-клиент командной строки, альтернатива Curl и Wget
Оригинал: HTTPie – Modern command line HTTP client , An alternate for Curl and Wget
Автор: Magesh Maruthamuthu
Дата публикации: 17 апреля 2019 года
Перевод: А. Кривошей
Дата перевода: март 2020 г.
Чаще всего для загрузки файлов и других задач, связанных со скачиванием данных из сети, мы используем команды Curl или Wget .
Ранее мы писали о лучших менеджерах загрузок командной строки. Вы можете почитать эти статьи:
Сегодня мы будем обсуждать ту же тему. Название утилиты - HTTPie. Это современный http-клиент командной строки и лучшая альтернатива для команд curl и wget.
Что такое HTTPie?
HTTPie (произносится как эйч-ти-ти-пай) - это современный http-клиент командной строки, который обеспечивает взаимодействие с веб-сервисами. Он предоставляет простую команду http, которая позволяет отправлять произвольные HTTP-запросы с использованием простого и естественного синтаксиса, и отображает цветной вывод.
HTTPie можно использовать для тестирования, отладки и общего взаимодействия с HTTP-серверами.
Главные возможности:
- выразительный и интуитивно понятный синтаксис;
- форматированный и раскрашенный вывод в терминал;
- встроенная поддержка JSON;
- HTTPS, прокси и аутентификация;
- пользовательские заголовки;
- Wget-подобные загрузки;
- поддержка Python 2.7 и 3.x.
Установка HTTPie в Linux
Большинство дистрибутивов Linux предоставляют пакет, который можно установить с помощью системного менеджера пакетов.
В системах Fedora используйте команду DNF для установки httpie.
$ sudo dnf install httpie
Для систем Debian/Ubuntu используйте команду APT-GET или APT.
$ sudo apt install httpie
Для систем на основе Arch Linux используйте Pacman.
$ sudo pacman -S httpie
Для систем RHEL/CentOS используйте команду YUM.
$ sudo yum install httpie
Для системы openSUSE Leap используйте команду Zypper.
$ sudo zypper install httpie
1) Как запросить URL с помощью HTTPie?
Базовое использование httpie - запросить URL-адрес веб-сайта в качестве аргумента.
# http 2daygeek.com HTTP/1.1 301 Moved Permanently CF-RAY: 4c4a618d0c02ce6d-LHR Cache-Control: max-age=3600 Connection: keep-alive Date: Tue, 09 Apr 2019 06:21:28 GMT Expires: Tue, 09 Apr 2019 07:21:28 GMT Location: https://2daygeek.com/ Server: cloudflare Transfer-Encoding: chunked Vary: Accept-Encoding
2) Как скачать файл с помощью HTTPie?
Вы можете скачать файл с помощью HTTPie с параметром --download. Это похоже на команду wget.
В качестве альтернативы вы можете сохранить выходной файл с другим именем, используя параметр -o.
3) Как возобновить частично выполненную загрузку, используя HTTPie?
Вы можете возобновить загрузку, используя HTTPie с параметром -c.
Вы можете проверить выполнение загрузки в приведенном ниже выводе.
root@Ubuntu18:/var/log# ls -lhtr 100MB.bin -rw-r--r-- 1 root root 25M Apr 9 01:33 100MB.bin
4) Как выгрузить файл на сервер с помощью HTTPie?
Вы можете выгрузить файл, используя HTTPie с символом «<».
$ http https://transfer.sh < Anbox-1.png
5) Как скачать файл, используя HTTPie с символом перенаправления ">"?
Вы можете скачать файл, используя HTTPie с символом перенаправления «>» и указанием имени выходного файла.
6) Как отправить метод HTTP GET?
Вы можете отправить метод HTTP GET в запросе. Метод GET используется для получения информации с данного сервера с использованием заданного URI.
# http GET httpie.org HTTP/1.1 301 Moved Permanently CF-RAY: 4c4a83a3f90dcbe6-SIN Cache-Control: max-age=3600 Connection: keep-alive Date: Tue, 09 Apr 2019 06:44:44 GMT Expires: Tue, 09 Apr 2019 07:44:44 GMT Location: https://httpie.org/ Server: cloudflare Transfer-Encoding: chunked Vary: Accept-Encoding
7) Как отправить форму?
Используйте приведенный ниже формат команды для отправки формы. Запрос POST используется для отправки данных на сервер, например, информации о клиенте, загрузки файла и т. д., с использованием форм HTML.
# http -f POST Ubuntu18.2daygeek.com hello='World' HTTP/1.1 200 OK Accept-Ranges: bytes Connection: Keep-Alive Content-Encoding: gzip Content-Length: 3138 Content-Type: text/html Date: Tue, 09 Apr 2019 06:48:12 GMT ETag: "2aa6-5844bf1b047fc-gzip" Keep-Alive: timeout=5, max=100 Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT Server: Apache/2.4.29 (Ubuntu) Vary: Accept-Encoding
Выполните приведенную ниже команду, чтобы увидеть отправляемый запрос.
# http -v Ubuntu18.2daygeek.com GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: ubuntu18.2daygeek.com User-Agent: HTTPie/0.9.8 hello=World HTTP/1.1 200 OK Accept-Ranges: bytes Connection: Keep-Alive Content-Encoding: gzip Content-Length: 3138 Content-Type: text/html Date: Tue, 09 Apr 2019 06:48:30 GMT ETag: "2aa6-5844bf1b047fc-gzip" Keep-Alive: timeout=5, max=100 Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT Server: Apache/2.4.29 (Ubuntu) Vary: Accept-Encoding
8) Выполнение HTTP-аутентификации
В настоящее время поддерживаются схемы аутентификации Basic и Digest.
Basic:
$ http -a username:password example.org
Digest:
$ http -A digest -a username:password example.org
Запрос пароля:
$ http -a username example.org