Linux 之 curl命令
基本使用
# 访问百度网址,终端会打印出百度的html文件内容
curl www.baidu.com
通用语法
curl [option] [url]
# option: 参数设置,可设置请求数据或者指定你需要的部分响应数据,如:响应头信息、响应cookie、请求cookie等
# url: 需要请求的网站网址
参数Option列举
本人使用curl --help列举的参数项
--abstract-unix-socket # 连接unix socket接口
--alt-svc <file name> # 使用指定文件开启http2转换http3/QUIC(alt-svc)
--anyauth # 选择身份认证方法
-a, --append # 上传时追加到文件,不覆盖原本的文件,如果文件不存在就创建
--basic # 使用http基本身份认证
--cacert <file> # 认证对等方CA证书
--capath <dir> # 验证对等方的CA目录
-E, --cert <certificate[:password]> # 客户端证书文件和密码
--cert-status # 验证服务器证书的状态
--cert-type <type> # 证书文件类型(DER/PEM/ENG)
--ciphers <list of ciphers> # 要使用的SSL密码
--compressed # 请求压缩响应
--compressed-ssh # 启用SSH压缩
-K, --config <file> # 从文件读取配置
--connect-timeout <seconds> # 允许连接的最长时间
--connect-to <HOST1:PORT1:HOST2:PORT2> # 连接到主机
-C, --continue-at <offset> # 恢复传输偏移
-b, --cookie <data|filename> # 从字符串/文件发送Cookie
-c, --cookie-jar <filename> # 操作后将cookie写入指定文件
--create-dirs # 创建必要的本地目录层次结构
--crlf # 上传时将LF转换为CRLF
--crlfile <file> # 从给定文件获取PEM格式的CRL列表
-d, --data <data> # HTTP POST数据
--data-ascii <data> # HTTP POST ASCII数据
--data-binary <data> # HTTP POST 二进制数据
--data-raw <data> # HTTP POST 数据,压缩
--data-urlencode <data> # HTTP POST数据url编码
--delegation <LEVEL> # GSS-API 授权许可
--digest # 使用HTTP摘要身份验证
-q, --disable # 禁用.curlrc
--disable-eprt # 使用EPRT或LPRT抑制
--disable-epsv # 使用EPSV抑制
--disallow-username-in-url # 不允许在url中使用用户名
--dns-interface <interface> # 用于DNS请求的接口
--dns-ipv4-addr <address> # 用于DNS请求的IPv4地址
--dns-ipv6-addr <address> # 用于DNS请求的IPv6地址
--dns-servers <addresses> # 要使用的DNS服务器地址
--doh-url <URL> # 通过DOH解析主机名
-D, --dump-header <filename> # 将收到的头文件写入指定文件
--egd-file <file> # 随机数据的EGD套接字路径
--engine <name> # 要使用的加密引擎
--expect100-timeout <seconds> # 超时时间
-f, --fail # HTTP错误时无提示失败(完全没有输出)
--fail-early # 第一次传输错误时失败,不继续
--false-start # 启用TLS错误启动
-F, --form <name=content> # 指定多部分MIME数据
--form-string <name=string> # 指定多部分MIME数据
--ftp-account <data> # 帐户数据字符串
--ftp-alternative-to-user <command> # 替换用户[名称]的字符串
--ftp-create-dirs # 如果不存在,则创建远程目录
--ftp-method <method> # 控制CWD使用
--ftp-pasv # 使用PASV/EPSV代替端口
-P, --ftp-port <address> # 使用端口而不是PASV
--ftp-pret # 在PASV之前发送PRET
--ftp-skip-pasv-ip # 跳过PASV的IP地址
--ftp-ssl-ccc # 验证后发送CCC
--ftp-ssl-ccc-mode <active/passive> # 设置CCC模式
--ftp-ssl-control # FTP登录需要SSL/TLS,清除传输
-G, --get # 将post数据放在URL中并使用GET
-g, --globoff # 使用{}和[]禁用URL序列和范围
--happy-eyeballs-timeout-ms <milliseconds> # 在尝试IPv4之前,IPv6要等待多长时间(以毫秒为单位)
--haproxy-protocol # 发送HAProxy代理协议v1头
-I, --head # 仅显示文档信息
-H, --header <header/@file> # 将自定义标头传递到服务器
-h, --help # 查看命令帮助文档
--hostpubmd5 <md5> # 主机公钥的可接受MD5哈希
--http0.9 # 允许HTTP 0.9响应
-0, --http1.0 # 使用HTTP 1.0
--http1.1 # 使用HTTP 1.1
--http2 # 使用HTTP 2.0
--http2-prior-knowledge # 使用不带HTTP/1.1升级的HTTP 2
--ignore-content-length # 忽略远程资源的大小
-i, --include # 在输出中包括协议响应头
-k, --insecure # 使用SSL时允许不安全的服务器连接
--interface <name> # 使用网络接口(或地址)
-4, --ipv4 # 将名称解析为IPv4地址
-6, --ipv6 # 将名称解析为IPv6地址
-j, --junk-session-cookies # 忽略从文件读取的会话cookies
--keepalive-time <seconds> # 保持激活探测的间隔时间
--key <key> # 私钥文件名
--key-type <type> # 私钥文件类型 (DER/PEM/ENG)
--krb <level> # 启用具有安全性<level>
--libcurl <file> # 转储此命令行的等效代码
--limit-rate <speed> # 限制传输速度至速率
-l, --list-only # 仅列表模式
--local-port <num/range> # 强制使用本地端口号的范围
-L, --location # 遵循重定向
--location-trusted # 例如--location,并将auth发送给其他主机
--login-options <options> # 服务器登录选项
--mail-auth <address> # 原始电子邮件的发件人地址
--mail-from <address> # 来自此地址的邮件
--mail-rcpt <address> # 邮寄到此地址
-M, --manual # 显示完整手册
--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进行身份验证
--oauth2-bearer <token> # OAuth 2承载令牌
-o, --output <file> # 写入文件而不是标准输出
--pass <phrase> # 私钥的密码短语
--path-as-is # 不要挤压。。URL路径中的序列
--pinnedpubkey <hashes> # 文件/哈希公钥以验证对等方
--post301 # 遵循301后不要切换到GET
--post302 # 遵循302后不要切换到GET
--post303 # 遵循301后不要切换到GET
--preproxy [protocol://]host[:port] # 先使用此代理
-#, --progress-bar # 将传输进度显示为条形图
--proto <protocols> # 启用/禁用协议
--proto-default <protocol> # 对任何缺少方案的URL使用协议
--proto-redir <protocols> # 启用/禁用重定向协议
-x, --proxy [protocol://]host[:port] # 使用此代理
--proxy-anyauth # 选择任何代理身份验证方法
--proxy-basic # 在代理上使用基本身份验证
--proxy-cacert <file> # 用于验证对等代理的CA证书
--proxy-capath <dir> # 验证对等代理的CA目录
--proxy-cert <cert[:passwd]> # 为代理设置客户端证书
--proxy-cert-type <type> # HTTPS代理的客户端证书类型
--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-tls13-ciphers <ciphersuite list> # TLS 1.3代理密码套件
--proxy-tlsauthtype <type> # HTTPS代理的TLS身份验证类型
--proxy-tlspassword <string> # HTTPS代理的TLS密码
--proxy-tlsuser <name> # HTTPS代理的TLS用户名
--proxy-tlsv1 # 对HTTPS代理使用TLSv1
-U, --proxy-user <user:password> # 代理用户和密码
--proxy1.0 <host[:port]> # 在给定端口上使用HTTP/1.0代理
-p, --proxytunnel # 通过HTTP代理隧道操作(使用CONNECT)
--pubkey <key> # SSH公钥文件名
-Q, --quote # 传输前向服务器发送命令
--random-file <file> # 用于从中读取随机数据的文件
-r, --range <range> # 仅检索范围内的字节
--raw # 执行HTTP“原始”;不传输解码
-e, --referer <URL> # 推荐人URL
-J, --remote-header-name # 使用提供的头文件名
-O, --remote-name # 将输出写入名为远程文件的文件
--remote-name-all # 对所有URL使用远程文件名
-R, --remote-time # 在本地输出上设置远程文件的时间
-X, --request <command> # 指定要使用的请求命令,请求方式GET/POST/PUT/DELETE等
--request-target # 指定此请求的目标
--resolve <host:port:address[,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
--ssl-allow-beast # 允许安全漏洞改进互操作
--ssl-no-revoke # 禁用证书吊销检查(Schannel)
--ssl-reqd # 需要SSL/TLS
-2, --sslv2 # 使用SSLv2
-3, --sslv3 # 使用SSLv3
--stderr # 重定向stderr的位置
--styled-output # 为HTTP头启用样式化输出
--suppress-connect-headers # 抑制代理连接响应头
--tcp-fastopen # 使用TCP快速打开
--tcp-nodelay # 使用TCP\u NODELAY选项
-t, --telnet-option <opt=val> # 设置telnet选项
--tftp-blksize <value> # 设置TFTP BLKSIZE选项
--tftp-no-options # 不发送任何TFTP选项
-z, --time-cond <time> # 基于时间条件的传输
--tls-max <VERSION> # 设置允许的最大TLS版本
--tls13-ciphers <list of TLS 1.3 ciphersuites> # 要使用的TLS 1.3密码套件
--tlsauthtype <type> # TLS身份验证类型
--tlspassword # TLS密码
--tlsuser <name> # TLS用户名
-1, --tlsv1 # 使用TLSv1.0或更高版本
--tlsv1.0 # 使用TLSv1.0或更高版本
--tlsv1.1 # 使用TLSv1.1或更高版本
--tlsv1.2 # 使用TLSv1.2或更高版本
--tlsv1.3 # 使用TLSv1.3或更高版本
--tr-encoding # 请求压缩传输编码
--trace <file> # 将调试跟踪写入文件
--trace-ascii <file> # 将调试跟踪写入文件,但没有十六进制输出
--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 # 显示版本号并退出
-w, --write-out <format> # 完成后使用输出格式
--xattr # 在扩展文件属性中存储元数据
- 以上参数均为翻译而来的解释,谨慎理解。