HTTPie:替代Curl和Wget的現(xiàn)代HTTP命令行客戶端
大多數(shù)時間我們會使用 curl 命令或是 wget 命令下載文件或者做其他事。
今天我們將討論同樣的話題。這個實用程序名為 HTTPie。
它是現(xiàn)代命令行 http 客戶端,也是 curl 和 wget 命令的替代品。
什么是 HTTPie?
HTTPie (發(fā)音是 aitch-tee-tee-pie) 是一個 HTTP 命令行客戶端。
HTTPie 工具是現(xiàn)代的 HTTP 命令行客戶端,它能通過命令行界面與 Web 服務進行交互。
它提供一個簡單的 http 命令,允許使用簡單而自然的語法發(fā)送任意的 HTTP 請求,并會顯示彩色的輸出。
HTTPie 能用于測試、調試及與 HTTP 服務器交互。
主要特點
- 具表達力的和直觀語法
 - 格式化的及彩色化的終端輸出
 - 內置 JSON 支持
 - 表單和文件上傳
 - HTTPS、代理和認證
 - 任意請求數(shù)據(jù)
 - 自定義頭部
 - 持久化會話
 - 類似 
wget的下載 - 支持 Python 2.7 和 3.x
 
在 Linux 下如何安裝 HTTPie
大部分 Linux 發(fā)行版都提供了系統(tǒng)包管理器,可以用它來安裝。
Fedora 系統(tǒng),使用 DNF 命令 來安裝 httpie:
$ sudo dnf install httpie
Debian/Ubuntu 系統(tǒng),使用 APT-GET 命令 或 APT 命令 來安裝 HTTPie。
$ sudo apt install httpie
基于 Arch Linux 的系統(tǒng),使用 Pacman 命令 來安裝 HTTPie。
$ sudo pacman -S httpie
RHEL/CentOS 的系統(tǒng),使用 YUM 命令 來安裝 HTTPie。
$ sudo yum install httpie
openSUSE Leap 系統(tǒng),使用 Zypper 命令 來安裝 HTTPie。
$ sudo zypper install httpie
用法
如何使用 HTTPie 請求 URL?
HTTPie 的基本用法是將網(wǎng)站的 URL 作為參數(shù)。
# http 2daygeek.comHTTP/1.1 301 Moved PermanentlyCF-RAY: 4c4a618d0c02ce6d-LHRCache-Control: max-age=3600Connection: keep-aliveDate: Tue, 09 Apr 2019 06:21:28 GMTExpires: Tue, 09 Apr 2019 07:21:28 GMTLocation: https://2daygeek.com/Server: cloudflareTransfer-Encoding: chunkedVary: Accept-Encoding
如何使用 HTTPie 下載文件
你可以使用帶 --download 參數(shù)的 HTTPie 命令下載文件。類似于 wget 命令。
# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.pngHTTP/1.1 200 OKAccept-Ranges: bytesCF-Cache-Status: HITCF-RAY: 4c4a65d5ca360a66-LHRCache-Control: public, max-age=7200Connection: keep-aliveContent-Length: 32066Content-Type: image/pngDate: Tue, 09 Apr 2019 06:24:23 GMTExpect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"Expires: Tue, 09 Apr 2019 08:24:23 GMTLast-Modified: Mon, 08 Apr 2019 04:54:25 GMTServer: cloudflareSet-Cookie: __cfduid=dd2034b2f95ae42047e082f59f2b964f71554791063; expires=Wed, 08-Apr-20 06:24:23 GMT; path=/; domain=.2daygeek.com; HttpOnly; SecureVary: Accept-EncodingDownloading 31.31 kB to "Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png"Done. 31.31 kB in 0.01187s (2.58 MB/s)
你還可以使用 -o 參數(shù)用不同的名稱保存輸出文件。
# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png -o Anbox-1.pngHTTP/1.1 200 OKAccept-Ranges: bytesCF-Cache-Status: HITCF-RAY: 4c4a68194daa0a66-LHRCache-Control: public, max-age=7200Connection: keep-aliveContent-Length: 32066Content-Type: image/pngDate: Tue, 09 Apr 2019 06:25:56 GMTExpect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"Expires: Tue, 09 Apr 2019 08:25:56 GMTLast-Modified: Mon, 08 Apr 2019 04:54:25 GMTServer: cloudflareSet-Cookie: __cfduid=d3eea753081690f9a2d36495a74407dd71554791156; expires=Wed, 08-Apr-20 06:25:56 GMT; path=/; domain=.2daygeek.com; HttpOnly; SecureVary: Accept-EncodingDownloading 31.31 kB to "Anbox-1.png"Done. 31.31 kB in 0.01551s (1.97 MB/s)
如何使用 HTTPie 恢復部分下載?
你可以使用帶 -c 參數(shù)的 HTTPie 繼續(xù)下載。
# http --download --continue https://speed.hetzner.de/100MB.bin -o 100MB.binHTTP/1.1 206 Partial ContentConnection: keep-aliveContent-Length: 100442112Content-Range: bytes 4415488-104857599/104857600Content-Type: application/octet-streamDate: Tue, 09 Apr 2019 06:32:52 GMTETag: "5253f0fd-6400000"Last-Modified: Tue, 08 Oct 2013 11:48:13 GMTServer: nginxStrict-Transport-Security: max-age=15768000; includeSubDomainsDownloading 100.00 MB to "100MB.bin"| 24.14 % 24.14 MB 1.12 MB/s 0:01:07 ETA^C
你根據(jù)下面的輸出驗證是否同一個文件:
[email protected]:/var/log# ls -lhtr 100MB.bin-rw-r--r-- 1 root root 25M Apr 9 01:33 100MB.bin
如何使用 HTTPie 上傳文件?
你可以通過使用帶有小于號 < 的 HTTPie 命令上傳文件
$ http https://transfer.sh < Anbox-1.png
如何使用帶有重定向符號 > 下載文件?
你可以使用帶有重定向 > 符號的 HTTPie 命令下載文件。
# http https://www.2daygeek.com/wp-content/uploads/2019/03/How-To-Install-And-Enable-Flatpak-Support-On-Linux-1.png > Flatpak.png# ls -ltrh Flatpak.png-rw-r--r-- 1 root root 47K Apr 9 01:44 Flatpak.png
發(fā)送一個 HTTP GET 請求?
您可以在請求中發(fā)送 HTTP GET 方法。GET 方法會使用給定的 URI,從給定服務器檢索信息。
# http GET httpie.orgHTTP/1.1 301 Moved PermanentlyCF-RAY: 4c4a83a3f90dcbe6-SINCache-Control: max-age=3600Connection: keep-aliveDate: Tue, 09 Apr 2019 06:44:44 GMTExpires: Tue, 09 Apr 2019 07:44:44 GMTLocation: https://httpie.org/Server: cloudflareTransfer-Encoding: chunkedVary: Accept-Encoding
提交表單?
使用以下格式提交表單。POST 請求用于向服務器發(fā)送數(shù)據(jù),例如客戶信息、文件上傳等。要使用 HTML 表單。
# http -f POST Ubuntu18.2daygeek.com hello='World'HTTP/1.1 200 OKAccept-Ranges: bytesConnection: Keep-AliveContent-Encoding: gzipContent-Length: 3138Content-Type: text/htmlDate: Tue, 09 Apr 2019 06:48:12 GMTETag: "2aa6-5844bf1b047fc-gzip"Keep-Alive: timeout=5, max=100Last-Modified: Sun, 17 Mar 2019 15:29:55 GMTServer: Apache/2.4.29 (Ubuntu)Vary: Accept-Encoding
運行下面的指令以查看正在發(fā)送的請求。
# http -v Ubuntu18.2daygeek.comGET / HTTP/1.1Accept: */*Accept-Encoding: gzip, deflateConnection: keep-aliveHost: ubuntu18.2daygeek.comUser-Agent: HTTPie/0.9.8hello=WorldHTTP/1.1 200 OKAccept-Ranges: bytesConnection: Keep-AliveContent-Encoding: gzipContent-Length: 3138Content-Type: text/htmlDate: Tue, 09 Apr 2019 06:48:30 GMTETag: "2aa6-5844bf1b047fc-gzip"Keep-Alive: timeout=5, max=100Last-Modified: Sun, 17 Mar 2019 15:29:55 GMTServer: Apache/2.4.29 (Ubuntu)Vary: Accept-Encoding
HTTP 認證?
當前支持的身份驗證認證方案是基本認證(Basic)和摘要驗證(Digest)。
基本認證:
$ http -a username:password example.org
摘要驗證:
$ http -A digest -a username:password example.org
提示輸入密碼:
$ http -a username example.org















 
 
 






 
 
 
 