curl 命令幫助及使用


前言
剛接觸 curl 就發現它的非常強大。奈何幫助文檔全是英文,看起來賊費勁。無奈只能硬着頭皮用自己蹩腳的英語和翻譯軟件硬生生的翻譯了一下 ,以便后續查閱使用。在這之前沒有發現已有翻譯過且詳細的實例博客。偶然意外看到一篇詳情博客。轉到詳情博客

一、簡介

curl是一種命令行工具,用於傳輸使用URL語法指定的數據.是一個非常強大的工具,支持多種協議。這里就不過得介紹了,詳情請看官網介紹
官網地址:https://curl.haxx.se/
GitHub地址:https://github.com/curl/curl

二、curl 幫助文檔

格式: curl [options...] <url>
Options: (H) 僅表示HTTP/HTTPS 協議, (F) 僅表示 FTP 協議

    --abstract-unix-socket <path> 通過抽象的Unix域套接字連接
    --anyauth 選擇任何身份驗證方法(H)
-a, --append 上傳時附加到目標文件(F/SFTP)
    --basic 使用HTTP基本身份驗證(H)
    --cacert <file> 用於驗證對等端的CA證書(SSL)
    --capath <dir> 用於驗證對等機的CA目錄(SSL)
-E, --cert CERT[:PASSWD] 客戶端證書文件和密碼(SSL)
    --cert-status 驗證服務器證書的狀態(SSL)
    --cert-type <type> 證書文件類型(der/pem/eng)(SSL)
    --ciphers <list of ciphers> 要使用的SSL密碼(SSL)
    --compressed 請求壓縮響應(使用deflate或gzip)
    --compressed-ssh 啟用ssh壓縮
-K, --config <file> 指定要讀取的配置文件
    --connect-timeout <seconds> 連接允許的最長時間
    --connect-to <HOST1:PORT1:HOST2:PORT2> 連接到主機
-C, --continue-at OFFSET 恢復傳輸偏移量
-b, --cookie <data> 從 string/file 發送 cookie(H)
-c, --cookie-jar <filename> 操作后將cookie寫入<filename>
    --create-dirs 創建必要的本地目錄層次結構
    --crlf 上載時將 LF 轉換為 CRLF
    --crlfile <file> 從給定的文件獲取PEM格式的CRL列表
-d, --data <data> HTTP Post 數據(H)
    --data-ascii <data> HTTP POST ASCII 數據(H)
    --data-binary <data> HTTP POST 二進制數據(H)
    --data-raw <data> HTTP POST data, 允許 '@' 字符(H)
    --data-urlencode <data> HTTP POST url 編碼數據(H)
    --delegation <LEVEL> GSS-API授權權限
    --digest 使用HTTP摘要身份驗證(H)
-q, --disable 禁用.currlc
    --disable-eprt 禁止使用EPRT或LPRT(F)
    --disable-epsv 禁止使用EPSV(F)
    --dns-interface <interface> 用於DNS請求的接口
    --dns-ipv4-addr <address> 用於DNS請求的IPv4地址
    --dns-ipv6-addr <address> 用於DNS請求的IPv6地址
    - -dns-servers <addresses> 要使用的DNS服務器地址
-D, --dump-header <filename> 將接收到的頭寫入<filename>
    --egd-file <file> 隨機數據的EGD套接字路徑(SSL)
    --engine <name> 要使用的加密引擎
    --expect100-timeout <seconds> 要等多久才能100繼續
-f, --fail HTTP錯誤時不顯示(完全沒有輸出)(H)
    --fail-early 第一次傳輸失敗,不繼續
    --false-start 啟動 TLS=False 啟動
-F, --form <name=content> 指定HTTP多部分發布數據(H)
    --form-string <name=string> 指定多部分MIME數據
    --ftp-account <data> 帳戶數據字符串(F)
    --ftp-alternative-to-user <command> 替換用戶的字符串[名稱](F)
    --ftp-create-dirs 創建遠程目錄(如果不存在)(F)
    --ftp-method <method> 控制CWD使用(F)
    --ftp-pasv 使用pasv/epsv而不是port(F)
-P, --ftp-port <address> 使用 PORT 而不是PASV(F)
    --ftp-pret 在pasv之前發送pret(F)
    --ftp-skip-pasv-ip 跳過PASV的IP地址(F)
    --ftp-ssl-ccc 認證后發送CCC(F)
    --ftp-ssl-ccc-mode <active/passive> 設置CCC模式(F)
    --ftp-ssl-control ftp登錄需要ssl/tls,傳輸清除(F)
-G, --get 以get的方式來發送數據(H)
-g, --globoff 使用{} 和 [] 禁用URL序列和范圍
    --happy-eyeballs-timeout-ms 嘗試ipv4之前等待ipv6的時間(以毫秒計)
-I, --head 僅顯示響應首部信息
    --haproxy-protocol 發送haproxy代理協議頭
-H, --header <header/@file> 將自定義頭傳遞到服務器
-h, --help 顯示當前幫助文檔
    --hostpubmd5 <md5> 主機公鑰的可接受MD5哈希(SSH)
-0, --http1.0 使用 HTTP 1.0(H)
    --http1.1 使用 HTTP 1.1
    --http2 使用 HTTP 2
    --http2-prior-knowledge 使用HTTP 2而不升級HTTP/1.1
    --ignore-content-length 忽略遠程資源的大小
-i, --include 在輸出中包含協議響應頭(H/F)
-k, --insecure 使用SSL時允許不安全的服務器連接(H)
    --interface <name> 使用網絡接口(或地址)
-4, --ipv4 將名稱解析為IPv4地址
-6, --ipv6 將名稱解析為IPv6地址
-j, --junk-session-cookies 忽略從文件讀取的會話cookie(H)
    --keepalive-time <seconds> 保持探針的間隔時間
    --key <key> 私鑰文件名(SSL/SSH)
    --key-type <type> 私鑰文件類型 (DER/PEM/ENG)(SSL)
    --krb <level> 啟用具有安全性的Kerberos<level>(F)
    --libcurl <file> 轉儲此命令行的libcurl等效代碼
    --limit-rate <speed> 限制傳輸速率
    -l, --list-only 僅列出ftp目錄的名稱(F)
    --local-port <num/range> 強制使用本地端口號的范圍
-L, --location 跟蹤重定向(H)
    --location-trusted 像--location樣,並將auth發送到其他主機(H)
    --login-options <options> 服務器登錄選項
    --mail-auth <address> 原始電子郵件的發起人地址
    --mail-from <address> 來自此地址的郵件
    --mail-rcpt <address> 郵寄到此地址
-M, --manual 顯示curl完整手冊
    --max-filesize <bytes> 要下載的最大文件大小
    --max-redirs <num> 允許的最大重定向數
-m, --max-time <seconds> 允許傳輸的最長時間
    --metalink 將給定的URL作為metalink xml文件處理
    --negotiate 使用HTTP協商(SPNEGO)身份驗證
-n, --netrc 必須讀取.netrc以獲取用戶名和密碼
    --netrc-file <filename> 為netrc指定文件
    --netrc-optional 使用.netrc或url
-:, --next 使下一個URL使用其單獨的選項集
    --no-alpn 禁用ALPN TLS擴展
-N, --no-buffer 禁用輸出流的緩沖
    --no-keepalive 在連接上禁用tcp keepalive
    --no-npn 禁用NPN TLS擴展
    --no-sessionid 禁用SSL會話ID重用
    --noproxy <no-proxy-list> 不使用代理的主機列表
    --ntlm 使用HTTP NTLM身份驗證
    --ntlm-wb 對WinBind使用HTTP NTLM身份驗證
    --oauth2-bearer <token> OAuth 2 Bearer Token
-o, --output <file> 寫入文件而不是stdout
    --pass <phrase> 私鑰的密碼短語
    --path-as-is 不要擠壓……URL路徑中的序列
    --pinnedpubkey <hashes> 文件/哈希 用於驗證對等機的公鑰
    --post301 在301重定向后不要切換到GET
    --post302 在302重定向后不要切換到GET
    --post303 在303重定向后不要切換到GET
    --preproxy [protocol://]host[:port] 首先使用此代理
-#, --progress-bar 將傳輸進度顯示為條形圖
    --proto <protocols> 啟用/禁用協議
    --proto-default <protocol> 對任何缺少方案的URL使用協議
    --proto-redir <protocols> 在重定向時啟用/禁用協議
-x, --proxy [protocol://]host[:port] 使用此代理
    --proxy-anyauth 選擇任何代理身份驗證方法 (H)
    --proxy-basic 在代理上使用基本身份驗證(H)
    --proxy-cacert <file> 用於驗證對等代理的CA證書(H)
    --proxy-capath <dir> 用於驗證代理對等機的CA目錄(H)
    --proxy-cert <cert[:passwd]> 設置代理的客戶端證書(H)
    --proxy-cert-type <type> HTTS代理的客戶端證書類型(H)
    --proxy-ciphers <list> 用於代理的SSL密碼
    --proxy-crlfile <file> 為代理設置一個CRL列表
    --proxy-digest 在代理上使用摘要式身份驗證
    --proxy-header <header/@file> 將自定義頭傳遞給代理
    --proxy-insecure 在不驗證代理的情況下執行HTTPS代理連接
    --proxy-key <key> HTTPS代理的私鑰
    --proxy-key-type <type> 代理的私鑰文件類型
    --proxy-negotiate 在代理上使用HTTP協商(SPNEGO)身份驗證
    --proxy-ntlm 在代理上使用NTLM身份驗證
    --proxy-pass <phrase> https代理的私鑰的密碼短語
    --proxy-pinnedpubkey <hashes> 用於驗證代理的公鑰的 文件/哈希
    --proxy-service-name <name> SPNEGO代理服務名稱
    --proxy-ssl-allow-beast 允許HTTPS代理的互操作存在安全缺陷
    --proxy-tlsauthtype <type> HTTPS代理的TLS身份驗證類型
    --proxy-tlspassword <string> HTTPS代理的TLS密碼
    --proxy-tlsuser <name> HTTPS代理的TLS用戶名
    --proxy-tlsv1 將tlsv1用於HTTPS代理
-U, --proxy-user <user:password> 代理用戶和密碼
    --proxy1.0 <host[:port]> 在給定端口上使用HTTP/1.0代理
-p, --proxytunnel 通過HTTP代理隧道操作(使用connect)
    --pubkey <key>  ssh公鑰文件名
-Q, --quote <cmd> 傳輸前將命令發送到服務器
    --random-file <file> 從文件中讀取隨機數據(SSL)
-r, --range <range> 僅檢索范圍內的字節
    --raw 執行http“raw”;無傳輸解碼(H)
-e, --referer <URL> 引用URL(H)
-J, --remote-header-name 使用header提供的文件名
-O, --remote-name 將輸出寫入名為遠程文件的文件
    --remote-name-all 對所有URL使用遠程文件名
-R, --remote-time 在本地輸出上設置遠程文件的時間
-X, --request <command> 指定要使用的請求命令
    --request-target 指定此請求的目標
    --resolve <host:port:address> 將主機+端口解析為此地址
    --retry <num> 如果出現暫時性問題,請重試請求
    --retry-connrefused 拒絕連接時重試(與--retry一起使用)
    --retry-delay <seconds> 兩次重試之間的等待時間
    --retry-max-time <seconds> 僅在此期間內重試
    --sasl-ir 在SASL身份驗證中啟用初始響應
    --service-name <name> SPNEGO服務名稱
-S, --show-error 顯示錯誤,即使使用-s
-s, --silent 靜音模式
    --socks4 <host[:port]> 指定主機+端口上的socks4代理
    --socks4a <host[:port]> 指定主機+端口上的socks4a代理
    --socks5 <host[:port]> 指定主機+端口上的socks5代理
    --socks5-basic 為socks5代理啟用用戶名/密碼驗證
    --socks5-gssapi 為socks5代理啟用GSS-API身份驗證
    --socks5-gssapi-nec 與NEC Socks5服務器的兼容性
    --socks5-gssapi-service <name> GSS-API的socks5代理服務名稱
    --socks5-hostname <host[:port]> socks5代理,將主機名傳遞給代理
-Y, --speed-limit <speed> 停止比此慢的傳輸
-y, --speed-time <seconds> 在此時間后觸發“速度限制”中止
    --ssl 嘗試ssl/tls (FTP, IMAP, POP3, SMTP)
    --ssl-allow-beast 允許安全缺陷改進互操作
    --ssl-no-revoke 禁用證書吊銷檢查(WinSL)
    --ssl-reqd 需要SSL/TLS(FTP, IMAP, POP3, SMTP)
-2, --sslv2 使用SSLv2(SSL)
-3, --sslv3 使用SSLv3(SSL)
    --stderr 重定向stderr的位置
    --suppress-connect-headers 禁止代理連接響應頭(SSL)
    --tcp-fastopen 使用TCP快速打開
    --tcp-nodelay 使用tcp_nodelay選項
-t, --telnet-option <opt=val> 設置telnet選項
    --tftp-blksize <value> 設置tftp blksize選項
    --tftp-no-options 不要發送任何TFTP選項
-z, --time-cond <time> 基於時間條件的傳輸
    --tls-max <VERSION> 使用TLSV1.0或更高版本
    --tlsauthtype <type> TLS身份驗證類型
    --tlspassword  TLS密碼
    --tlsuser <name> TLS用戶名
-1, --tlsv1 使用TLSV1.0或更高版本(SSL)
    --tlsv1.0 使用TLSv1.0(SSL)
    --tlsv1.1 使用TLSv1.1(SSL)
    --tlsv1.2 使用TLSv1.2(SSL)
    --tlsv1.3 使用TLSv1.3(SSL)
    --tr-encoding 請求壓縮傳輸編碼(H)
    --trace <file> 將調試跟蹤寫入文件
    --trace-ascii <file> 如 --trace,但無十六進制輸出
    --trace-time 向跟蹤/詳細輸出添加時間戳
    --unix-socket <path> 通過這個Unix域套接字連接
-T, --upload-file <file> 將本地文件傳輸到目標
    --url <url> 要使用的URL
-B, --use-ascii 使用ASCII/文本傳輸
-u, --user <user:password> 服務器用戶和密碼
-A, --user-agent <name> 將用戶代理<name>發送到服務器
-v, --verbose 打印操作的詳情信息
-V, --version 顯示 curl 的版本號
-w, --write-out <format> 完成后使用輸出格式
    --xattr 將元數據存儲在擴展文件屬性中

三、curl 的使用

# 顯示響應首部信息
curl -I www.baidu.com 

# 模擬瀏覽器
curl -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25"  www.baidu.com

# 靜默模式,不顯示curl進度
curl -s www.baidu.com 

# 顯示一次通信詳情信息
curl -v www.baidu.com 

# 顯示詳情並時間戳跟蹤
curl -v --trace-time www.baicu.com 

# 指定 GET 請求訪問百度,
curl -X GET www.baidu.com  同 curl -G www.baidu.com

# 向 httpbin.org 發送 POST 請求
curl -s -X POST "http://www.httpbin.org/post" -H "accept: application/json" 

# 自定義Header至百度
curl -H "name:zzw" www.baidu.com 

參考博客:
https://www.cnblogs.com/doseoer/p/7044344.html
https://www.jianshu.com/p/3aecc761fb9e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM