使用方法: curl [选项...] <url>

常用参数

基本操作

  • -X, --request <method>: 指定请求方法(如 GET、POST、PUT、DELETE 等)。
  • -d, --data <data>: 发送 HTTP POST 数据。
  • -G, --get: 将 POST 数据放入 URL 并使用 GET 方法。
  • -I, --head: 仅显示文档信息(HTTP 头部)。
  • -L, --location: 自动跟随重定向。
  • -o, --output <file>: 将输出写入文件。
  • -u, --user <user:password>: 指定用户名和密码。
  • -H, --header <header>: 添加自定义 HTTP 头部。
  • -v, --verbose: 显示详细的操作过程。
  • -s, --silent: 静默模式,不显示任何进度信息。
  • -w, --write-out <format>: 操作完成后输出指定格式的信息。

认证和加密

  • --basic: 使用 HTTP 基本认证。
  • --digest: 使用 HTTP 摘要认证。
  • --ntlm: 使用 HTTP NTLM 认证。
  • --oauth2-bearer <token>: 使用 OAuth2 Bearer Token 认证。
  • --ssl: 启用 SSL/TLS。
  • --ssl-reqd: 强制使用 SSL/TLS。

文件传输

  • -T, --upload-file <file>: 上传文件到目标服务器。
  • -C, --continue-at <offset>: 从指定偏移量开始续传。
  • -F, --form <name=content>: 发送 multipart MIME 数据。
  • --limit-rate <speed>: 限制传输速率。
  • --max-time <seconds>: 设置最大传输时间。
  • --retry <num>: 在发生临时错误时重试请求。
  • --range <range>: 获取指定字节范围的内容。

代理设置

  • -x, --proxy [protocol://]host[:port]: 设置代理服务器。
  • --proxy-user <user:password>: 代理服务器的用户名和密码。
  • --proxy-ntlm: 在代理服务器上使用 NTLM 认证。
  • --proxy-ssl-allow-beast: 允许代理服务器使用有安全漏洞的 SSL/TLS。

网络选项

  • -4, --ipv4: 强制解析为 IPv4 地址。
  • -6, --ipv6: 强制解析为 IPv6 地址。
  • --dns-servers <addresses>: 指定 DNS 服务器。
  • --interface <name>: 使用指定的网络接口进行请求。
  • --socks5 <host[:port]>: 使用 SOCKS5 代理。

调试和日志

  • --trace <file>: 将调试信息写入文件。
  • --trace-time: 在调试输出中添加时间戳。
  • --stderr <file>: 将错误输出定向到文件。
  • -D, --dump-header <filename>: 将响应头保存到文件。

输出格式和显示

  • --progress-bar: 显示传输进度条。
  • --remote-name: 将输出写入文件,并使用服务器返回的文件名。
  • --remote-time: 设置本地文件的时间戳为远程文件的时间。
  • --styled-output: 启用彩色输出。

全部选项

  • --abstract-unix-socket <path>
    通过抽象 Unix 域套接字连接

  • --alt-svc <file name>
    启用 alt-svc 并使用此缓存文件

  • --anyauth
    选择任意身份验证方法

  • -a, --append
    上传时追加到目标文件

  • --aws-sigv4 <provider1[:provider2[:region[:service]]]>
    使用 AWS V4 签名认证

  • --basic
    使用 HTTP 基本认证

  • --cacert <file>
    用于验证对等方的 CA 证书

  • --capath <dir>
    用于验证对等方的 CA 目录

  • -E, --cert <certificate[:password]>
    客户端证书文件和密码

  • --cert-status
    通过 OCSP-staple 验证服务器证书的状态

  • --cert-type <type>
    证书类型 (DER/PEM/ENG/P12)

  • --ciphers <list of ciphers>
    使用的 SSL 密码列表

  • --compressed
    请求压缩响应

  • --compressed-ssh
    启用 SSH 压缩

  • -K, --config <file>
    从文件读取配置

  • --connect-timeout <fractional seconds>
    允许的最大连接时间

  • --connect-to <HOST1:PORT1:HOST2:PORT2>
    连接到主机

  • -C, --continue-at <offset>
    续传偏移量

  • -b, --cookie <data|filename>
    从字符串/文件发送 Cookie

  • -c, --cookie-jar <filename>
    操作后将 Cookie 写入 <filename>

  • --create-dirs
    创建必要的本地目录层次结构

  • --create-file-mode <mode>
    创建文件的模式

  • --crlf
    上传时将 LF 转换为 CRLF

  • --crlfile <file>
    使用此 CRL 列表

  • --curves <algorithm list>
    (EC) 请求的 TLS 密钥交换算法

  • -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-cert-status
    通过 OCSP-staple 验证 DoH 服务器证书的状态

  • --doh-insecure
    允许不安全的 DoH 服务器连接

  • --doh-url <URL>
    通过 DoH 解析主机名

  • -D, --dump-header <filename>
    将接收到的头写入 <filename>

  • --egd-file <file>
    用于随机数据的 EGD 套接字路径

  • --engine <name>
    使用的加密引擎

  • --etag-compare <file>
    从文件传递 ETag 作为自定义头

  • --etag-save <file>
    从请求中解析 ETag 并保存到文件

  • --expect100-timeout <seconds>
    等待 100-continue 的时间

  • -f, --fail
    在 HTTP 错误时快速失败且无输出

  • --fail-early
    在第一个传输错误时失败,不继续

  • --fail-with-body
    在 HTTP 错误时失败但保存正文

  • --false-start
    启用 TLS False Start

  • -F, --form <name=content>
    指定多部分 MIME 数据

  • --form-escape
    使用反斜杠转义多部分表单字段/文件名

  • --form-string <name=string>
    指定多部分 MIME 数据

  • --ftp-account <data>
    账户数据字符串

  • --ftp-alternative-to-user <command>
    替换 USER [name] 的字符串

  • --ftp-create-dirs
    如果不存在则创建远程目录

  • --ftp-method <method>
    控制 CWD 的使用

  • --ftp-pasv
    使用 PASV/EPSV 而不是 PORT

  • -P, --ftp-port <address>
    使用 PORT 而不是 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 PROXY 协议 v1 头

  • -I, --head
    仅显示文档信息

  • -H, --header <header/@file>
    传递自定义头到服务器

  • -h, --help <category>
    获取命令帮助

  • --hostpubmd5 <md5>
    可接受的主机公钥 MD5 哈希

  • --hostpubsha256 <sha256>
    可接受的主机公钥 SHA256 哈希

  • --hsts <file name>
    启用 HSTS 并使用此缓存文件

  • --http0.9
    允许 HTTP 0.9 响应

  • -0, --http1.0
    使用 HTTP 1.0

  • --http1.1
    使用 HTTP 1.1

  • --http2
    使用 HTTP 2

  • --http2-prior-knowledge
    不使用 HTTP/1.1 升级直接使用 HTTP 2

  • --http3
    使用 HTTP v3

  • --http3-only
    仅使用 HTTP v3

  • --ignore-content-length
    忽略远程资源的大小

  • -i, --include
    在输出中包含协议响应头

  • -k, --insecure
    允许不安全的服务器连接

  • --interface <name>
    使用网络接口 (或地址)

  • -4, --ipv4
    将名称解析为 IPv4 地址

  • -6, --ipv6
    将名称解析为 IPv6 地址

  • --json <data>
    HTTP POST JSON 数据

  • -j, --junk-session-cookies
    忽略从文件读取的会话 Cookie

  • --keepalive-time <seconds>
    保持活动探测的间隔时间

  • --key <key>
    私钥文件名

  • --key-type <type>
    私钥文件类型 (DER/PEM/ENG)

  • --krb <level>
    启用 Kerberos 并设置安全级别

  • --libcurl <file>
    转储此命令行的 libcurl 等效代码

  • --limit-rate <speed>
    将传输速度限制为 RATE

  • -l, --list-only
    仅列出模式

  • --local-port <num/range>
    强制使用本地端口号范围

  • -L, --location
    跟随重定向

  • --location-trusted
    类似于 --location,并向其他主机发送认证信息

  • --login-options <options>
    服务器登录选项

  • --mail-auth <address>
    原始邮件的发件人地址

  • --mail-from <address>
    从此地址发送邮件

  • --mail-rcpt <address>
    向此地址发送邮件

  • --mail-rcpt-allowfails
    允许 RCPT TO 命令对某些收件人失败

  • -M, --manual
    显示完整手册

  • --max-filesize <bytes>
    下载的最大文件大小

  • --max-redirs <num>
    允许的最大重定向次数

  • -m, --max-time <fractional seconds>
    允许的最大传输时间

  • --metalink
    将给定的 URL 作为 metalink XML 文件处理

  • --negotiate
    使用 HTTP Negotiate (SPNEGO) 认证

  • -n, --netrc
    必须读取 .netrc 以获取用户名和密码

  • --netrc-file <filename>
    指定 netrc 文件

  • --netrc-optional
    使用 .netrc 或 URL

  • -:, --next
    使下一个 URL 使用其单独的选项集

  • --no-alpn
    禁用 ALPN TLS 扩展

  • -N, --no-buffer
    禁用输出流的缓冲

  • --no-clobber
    不覆盖已存在的文件

  • --no-keepalive
    禁用连接上的 TCP keepalive

  • --no-npn
    禁用 NPN TLS 扩展

  • --no-progress-meter
    不显示进度条

  • --no-sessionid
    禁用 SSL 会话 ID 重用

  • --noproxy <no-proxy-list>
    不使用代理的主机列表

  • --ntlm
    使用 HTTP NTLM 认证

  • --ntlm-wb
    使用 winbind 进行 HTTP NTLM 认证

  • --oauth2-bearer <token>
    OAuth 2 Bearer 令牌

  • -o, --output <file>
    写入文件而不是标准输出

  • --output-dir <dir>
    保存文件的目录

  • -Z, --parallel
    并行执行传输

  • --parallel-immediate
    不等待多路复用(与 --parallel 一起使用)

  • --parallel-max <num>
    并行传输的最大并发数

  • --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
    选择任意代理认证方法

  • --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 Negotiate (SPNEGO) 认证

  • --proxy-ntlm
    在代理上使用 NTLM 认证

  • --proxy-pass <phrase>
    HTTPS 代理的私钥密码短语

  • --proxy-pinnedpubkey <hashes>
    用于验证代理的公钥文件/哈希

  • --proxy-service-name <name>
    SPNEGO 代理服务名称

  • --proxy-ssl-allow-beast
    允许 HTTPS 代理的安全漏洞以提高互操作性

  • --proxy-ssl-auto-client-cert
    为代理使用自动客户端证书(Schannel)

  • --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 <command>
    在传输前向服务器发送命令

  • --random-file <file>
    用于读取随机数据的文件

  • -r, --range <range>
    仅检索范围内的字节

  • --rate <max request rate>
    串行传输的请求速率

  • --raw
    执行 HTTP “raw”;不进行传输解码

  • -e, --referer <URL>
    引用 URL

  • -J, --remote-header-name
    使用头提供的文件名

  • -O, --remote-name
    将输出写入与远程文件同名的文件

  • --remote-name-all
    对所有 URL 使用远程文件名

  • -R, --remote-time
    设置本地输出文件的远程时间

  • --remove-on-error
    在错误时删除输出文件

  • -X, --request <method>
    指定使用的请求方法

  • --request-target <path>
    指定此请求的目标

  • --resolve <[+]host:port:addr[,addr]...>
    将主机+端口解析为此地址

  • --retry <num>
    在发生临时问题时重试请求

  • --retry-all-errors
    重试所有错误(与 --retry 一起使用)

  • --retry-connrefused
    在连接被拒绝时重试(与 --retry 一起使用)

  • --retry-delay <seconds>
    重试之间的等待时间

  • --retry-max-time <seconds>
    仅在此期间内重试

  • --sasl-authzid <identity>
    SASL PLAIN 认证的身份

  • --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>
    在此时间后触发 speed-limit 中止

  • --ssl
    尝试 SSL/TLS

  • --ssl-allow-beast
    允许安全漏洞以提高互操作性

  • --ssl-auto-client-cert
    使用自动客户端证书(Schannel)

  • --ssl-no-revoke
    禁用证书吊销检查(Schannel)

  • --ssl-reqd
    要求 SSL/TLS

  • --ssl-revoke-best-effort
    忽略缺失/离线的证书 CRL 分发点

  • -2, --sslv2
    使用 SSLv2

  • -3, --sslv3
    使用 SSLv3

  • --stderr <file>
    将 stderr 重定向到文件

  • --styled-output
    为 HTTP 头启用样式化输出

  • --suppress-connect-headers
    抑制代理 CONNECT 响应头

  • --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>
    设置允许的最大 TLS 版本

  • --tls13-ciphers <ciphersuite list>
    使用的 TLS 1.3 密码套件

  • --tlsauthtype <type>
    TLS 认证类型

  • --tlspassword <string>
    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,但没有十六进制输出

  • --trace-time
    在跟踪/详细输出中添加时间戳

  • --unix-socket <path>
    通过此 Unix 域套接字连接

  • -T, --upload-file <file>
    将本地文件传输到目标

  • --url <url>
    要处理的 URL

  • --url-query <data>
    添加 URL 查询部分

  • -B, --use-ascii
    使用 ASCII/文本传输

  • -u, --user <user:password>
    服务器用户名和密码

  • -A, --user-agent <name>
    向服务器发送 User-Agent 名称

  • -v, --verbose
    使操作更详细

  • -V, --version
    显示版本号并退出

  • -w, --write-out <format>
    完成后使用输出格式

  • --xattr
    将元数据存储在扩展文件属性中