291629

1458 分钟

#Bash 的 curl 命令

curl [OPTION]... URL

功能

通过 URL 从服务器传输数据或向服务器传输数据。

类型

可执行文件(/usr/bin/curl),属于 curl

参数

  • OPTION - 选项:
    • --abstract-unix-socket <path> - 通过抽象 UNIX 域 Socket 连接
    • --alt-svc <file name> - 使用该缓存文件启用 alt-svc
    • --anyauth - 自动选择任意认证方式
    • -a, --append - 上传时追加到目标文件
    • --aws-sigv4 <provider1[:provider2[:region[:service]]]> - 使用 AWS V4 签名认证
    • --basic - 使用 HTTP Basic 认证
    • --ca-native - 使用操作系统原生 CA 证书
    • --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 写入文件
    • --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> - URL 编码后的 HTTP POST 数据
    • --delegation <LEVEL> - GSS-API 委托权限级别
    • --digest - 使用 HTTP Digest 认证
    • -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> - 将响应头写入文件
    • --egd-file <file> - 用于随机数据的 EGD socket 路径
    • --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> - 指定 multipart MIME 数据
    • --form-escape - 使用反斜杠转义 multipart 表单字段/文件名
    • --form-string <name=string> - 指定 multipart MIME 字符串数据
    • --ftp-account <data> - FTP 账户数据字符串
    • --ftp-alternative-to-user <command> - 替代 USER 命令的字符串
    • --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 - 登录使用 SSL/TLS,传输明文
    • -G, --get - 将 POST 数据附加到 URL 并使用 GET
    • -g, --globoff - 禁用 URL 中 {} 和 [] 的扩展
    • --happy-eyeballs-timeout-ms <milliseconds> - IPv6 优先连接超时后切换 IPv4
    • --haproxy-clientip - 在 HAProxy PROXY v1 头中设置客户端 IP
    • --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/2(不升级)
    • --http3 - 使用 HTTP/3
    • --http3-only - 仅使用 HTTP/3
    • --ignore-content-length - 忽略远程资源大小
    • -i, --include - 输出中包含响应头
    • -k, --insecure - 允许不安全连接
    • --interface <name> - 使用指定网络接口
    • --ipfs-gateway <URL> - 指定 IPFS 网关
    • -4, --ipv4 - 解析为 IPv4
    • -6, --ipv6 - 解析为 IPv6
    • --json <data> - 发送 JSON 格式 POST 数据
    • -j, --junk-session-cookies - 忽略文件中的会话 Cookie
    • --keepalive-time <seconds> - keepalive 探测间隔
    • --key <key> - 私钥文件
    • --key-type <type> - 私钥类型(DER/PEM/ENG)
    • --krb <level> - 启用 Kerberos(安全级别)
    • --libcurl <file> - 导出等效的 libcurl 代码
    • --limit-rate <speed> - 限制传输速度
    • -l, --list-only - 仅列出模式
    • --local-port <num/range> - 指定本地端口范围
    • -L, --location - 跟随重定向
    • --location-trusted - 跟随重定向并发送认证信息
    • --login-options <options> - 服务器登录选项
    • --mail-auth <address> - 原始邮件发件人地址
    • --mail-from <address> - 发件地址
    • --mail-rcpt <address> - 收件地址
    • --mail-rcpt-allowfails - 允许部分收件人失败
    • -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 会话复用
    • --noproxy <no-proxy-list> - 不使用代理的主机列表
    • --ntlm - 使用 HTTP NTLM 认证
    • --ntlm-wb - 使用 winbind 的 NTLM 认证
    • --oauth2-bearer <token> - OAuth2 Bearer Token
    • -o, --output <file> - 输出到文件
    • --output-dir <dir> - 指定输出目录
    • -Z, --parallel - 并行执行传输
    • --parallel-immediate - 立即并行(不等待复用)
    • --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 - 使用 Basic 代理认证
    • --proxy-ca-native - 使用操作系统原生 CA 验证代理
    • --proxy-cacert <file> - 用于验证代理的 CA 证书文件
    • --proxy-capath <dir> - 用于验证代理的 CA 证书目录
    • --proxy-cert <cert[:passwd]> - 代理客户端证书
    • --proxy-cert-type <type> - 代理证书类型
    • --proxy-ciphers <list> - 代理使用的 SSL 加密套件
    • --proxy-crlfile <file> - 代理使用的 CRL 列表
    • --proxy-digest - 使用 Digest 代理认证
    • --proxy-header <header/@file> - 向代理发送自定义头
    • --proxy-http2 - HTTPS 代理使用 HTTP/2
    • --proxy-insecure - 不验证代理证书
    • --proxy-key <key> - 代理私钥文件
    • --proxy-key-type <type> - 代理私钥类型
    • --proxy-negotiate - 使用 SPNEGO 代理认证
    • --proxy-ntlm - 使用 NTLM 代理认证
    • --proxy-pass <phrase> - 代理私钥密码
    • --proxy-pinnedpubkey <hashes> - 验证代理公钥
    • --proxy-service-name <name> - SPNEGO 代理服务名称
    • --proxy-ssl-allow-beast - 允许 BEAST 漏洞(兼容性)
    • --proxy-ssl-auto-client-cert - 自动使用客户端证书(Schannel)
    • --proxy-tls13-ciphers <ciphersuite list> - TLS 1.3 代理加密套件
    • --proxy-tlsauthtype <type> - 代理 TLS 认证类型
    • --proxy-tlspassword <string> - 代理 TLS 密码
    • --proxy-tlsuser <name> - 代理 TLS 用户名
    • --proxy-tlsv1 - 代理连接使用 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(不进行解码)
    • -e, --referer <URL> - 设置 Referer 头
    • -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-connrefused - 连接被拒绝时重试
    • --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> - SOCKS5 GSS-API 服务名称
    • --socks5-hostname <host[:port]> - SOCKS5 代理(传递主机名)
    • -Y, --speed-limit <speed> - 低于该速度时中止传输
    • -y, --speed-time <seconds> - 持续低速触发中止的时间
    • --ssl - 尝试使用 SSL/TLS
    • --ssl-allow-beast - 允许 BEAST 漏洞(兼容性)
    • --ssl-auto-client-cert - 自动使用客户端证书(Schannel)
    • --ssl-no-revoke - 禁用证书吊销检查(Schannel)
    • --ssl-reqd - 强制使用 SSL/TLS
    • --ssl-revoke-best-effort - 忽略 CRL 不可用情况(Schannel)
    • -2, --sslv2 - 使用 SSLv2
    • -3, --sslv3 - 使用 SSLv3
    • --stderr <file> - 将错误输出重定向到文件
    • --styled-output - 启用带样式的 HTTP 头输出
    • --suppress-connect-headers - 抑制代理 CONNECT 响应头
    • --tcp-fastopen - 使用 TCP Fast Open
    • --tcp-nodelay - 使用 TCP_NODELAY 选项
    • -t, --telnet-option <opt=val> - 设置 telnet 选项
    • --tftp-blksize <value> - 设置 TFTP 块大小
    • --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-config <string> - 配置 trace/verbose 输出内容
    • --trace-ids - 在 trace/verbose 中添加连接标识
    • --trace-time - 在 trace/verbose 中添加时间戳
    • --unix-socket <path> - 通过 UNIX 域 Socket 连接
    • -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
    • --variable <[%]name=text/@file> - 设置变量
    • -v, --verbose - 输出详细调试信息
    • -V, --version - 显示版本信息并退出
    • -w, --write-out <format> - 完成后输出指定格式
    • --xattr - 将元数据存储到扩展文件属性
  • URL - 目标的 URL

cURL 命令生成器

#示例

$ curl https://example.com
<!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:visited{color:#348}</style></head><body><div><h1>Example Domain</h1><p>This domain is for use in documentation examples without needing permission. Avoid use in operations.</p><p><a href="https://iana.org/domains/example">Learn more</a></p></div></body></html>

#推荐阅读

#手册

更新: 2026/4/29

作者: PlanC

创建: 2026/4/29