ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

reference 速查手册:curl 命令备忘清单——核心参数详解与实战技巧

reference 速查手册:curl 命令备忘清单——核心参数详解与实战技巧 reference 速查手册curl 命令备忘清单——核心参数详解与实战技巧【免费下载链接】reference面向开发者的技术速查清单Cheat Sheets集合整理常见技术、工具与开发流程帮助快速查阅关键信息提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference本文基于 reference 项目的 curl 速查清单系统讲解 curl 传输数据的核心参数输出控制、请求方法、数据提交、头信息、SSL以及 GET/POST、文件上传下载、断点续传、批量下载、响应时间测量等高频实战用法。读完之后你可以直接复制其中的命令完成日常接口调试、资源探测、文件传输与批量下载任务并理解每条命令背后参数的作用。一、curl 是什么如何安装curl 是一种在服务器之间传输数据的命令行工具支持的协议包括 HTTP、FTP、IMAP、LDAP、POP3、SCP、SFTP、SMB、SMTP 等。它既可以用于快速抓取网页和接口响应也可以用于上传/下载文件、检查服务可用性是开发者排查网络问题与编写自动化脚本时的常用工具。reference 仓库 curl 清单 中给出的安装方式以 Alpine Linux 为例apk add --update curl # alpine linux 中安装其他发行版使用各自的包管理器安装即可本文所有示例均假定系统已安装 curl。二、核心选项速查表以下参数表完整继承自 docs/curl.md 的 “Options” 部分并按用途分组整理。2.1 输出与认证-o file # --output: 将响应写入文件 -u user:pass # --user: 基本认证凭证-o用于把响应体直接写入本地文件而不是打印到标准输出后面 文件下载 章节会给出具体用法-u后跟用户名:密码形式的凭证常用于受 HTTP Basic 认证保护的接口和 FTP 服务。2.2 控制输出详细程度-v # --verbose: 在操作期间使 curl 冗长 -vv # 更冗长 -s # --silent: 不显示进度表或错误 -S # --show-error: 与 --silent (-sS) 一起使用时显示错误但没有进度表-v会打印连接建立、请求行、请求头、响应头、TLS 协商等完整过程是排查“请求到底发出去没有、服务回了什么”的第一选择-s隐藏进度条和错误信息适合脚本中使用单独使用时连错误也看不到-sS是脚本场景的最佳组合平时安静出错时仍能看到错误信息。2.3 查看 HTTP 头-i # --include: 在输出中包含 HTTP 标头 -I # --head: 仅标头发送 HEAD 请求两者区别-i仍然发起正常请求只是把响应头附加在响应体之前输出-I直接发送 HEAD 请求只拿响应头、不下载响应体适合快速探测资源是否存在。2.4 请求方法与跳转-X POST # --request: 显式指定 HTTP 方法 -L # 如果页面重定向则跟随链接 -F # --form: multipart/form-data 的 HTTP POST 数据-X可显式指定 GET/POST/PUT 等方法日常用-d、-F时方法通常会自动切换为 POST显式指定方法更多用于调试或调用非标准方法如 PUT、DELETE-L让 curl 跟随 3xx 跳转很多短链接、CDN 场景必须加上它-F按multipart/form-data格式提交是表单文件上传的标准方式。2.5 提交数据# --data: HTTP post 数据URL 编码例如 statusHello -d data # --data 通过文件 -d file # --get: 通过 GET 发送 -d 数据 -G-d data会把数据放到请求体中发送并默认设置Content-Type: application/x-www-form-urlencoded-d file从文件读取数据注意不是把文件作为附件上传上传要用-F-G会把-d指定的数据拼接到 URL 查询串中以 GET 方式发送常用于给 GET 接口带查询参数。2.6 头信息与 Cookie-A str # --user-agent: 自定义 UA -b nameval # --cookie: 发送指定 cookie -b, --cookie FILE # 从文件加载 URL 的指定 cookie -c, --cookie-jar FILE # 将响应中的 cookie 保存到指定文件 -b FILE # --cookie: 从文件读取 cookie -H X-Foo: y # --header: 自定义请求头 --compressed # 使用 deflate/gzip 压缩传输围绕 cookie 的常见组合是先用-c cookies.txt把登录响应里的 cookie 存到文件再用-b cookies.txt在后续请求中带回从而维持会话。-H可以重复出现以添加多个自定义头比如覆盖Host、携带认证 Token 等。2.7 SSL 相关参数--cacert file # 指定 CA 证书文件 --capath dir # 指定 CA 证书目录-E, --cert cert # 客户端证书文件 --cert-type # 证书类型: der/pem/eng -k, --insecure # 跳过证书校验用于自签名证书内网或私有 CA 环境可以通过--cacert/--capath指定信任的证书避免逐个域名加-k-E提供双向认证mTLS所需的客户端证书--cert-type指定其编码格式-k会跳过服务器证书校验仅建议在测试自签名证书的环境使用生产环境中应改为配置正确的 CA 证书。更多证书工具可参考仓库的 OpenSSL 速查。三、日常请求示例3.1 GET / HEAD 请求以下表格完整来自 curl 清单 GET/HEAD 部分| 命令 | 说明 | | :- | :- | |curl -I https://www.baidu.com| curl 发 HEAD 请求仅取响应头 | |curl -v -I https://www.baidu.com| 带详细连接信息的 HEAD 请求 | |curl -X GET https://www.baidu.com| 使用显式 HTTP 方法发请求 | |curl --noproxy 127.0.0.1 http://www.stackoverflow.com| 绕过 http 代理发请求 | |curl --connect-timeout 10 -I -k https://www.baidu.com| curl 默认没有超时用--connect-timeout限制连接时间 | |curl --verbose --header Host: www.mytest.com:8182 www.baidu.com| curl 发送额外自定义头 | |curl -k -v https://www.google.com| 获取带详细过程的响应跳过证书校验 |两个值得注意的细节curl 默认没有超时限制写脚本时应显式加上--connect-timeout等参数避免请求长时间挂起--header Host: ...可以覆盖 Host 头常用于测试虚拟主机配置或多域名部署的站点与 Nginx 速查 中 server_name 场景配合使用。3.2 POST 与 JSON 请求| 命令 | 说明 | | :- | :- | |curl -d nameusernamepassword123456 URL| curl 发送表单数据 | |curl URL -H content-type: application/json -d { woof: bark}| curl 发送 JSON 请求体 |发送 JSON 时注意用-H把Content-Type显式设为application/json并用-d携带请求体-d的内容是 URL 编码的原始数据若参数值本身包含、、空格等字符需要自己做 URL 编码。3.3 multipart 文件上传$ curl -v -include \ --form key1value1 \ --form uploadlocalfilename URL每个--form/-F参数对应表单中的一个字段前缀表示该字段的值是文件内容可同时混合普通字段与文件字段。另一条等价写法见 高级示例curl -v -F key1value1 -F uploadlocalfilename URL。3.4 美化 JSON 响应$ curl -XGET http://${elasticsearch_ip}:9200/_cluster/nodes | python -m json.tool把响应管道给python -m json.tool即可格式化输出。仓库中还有专门的 jq 速查jq 对 JSON 过滤、提取字段更灵活例如配合-s静默模式使用接口返回的状态码含义可对照 HTTP 状态码速查。3.5 通过脚本远程安装工具rvm 示例curl -sSL https://get.rvm.io | bash这是curl | bash模式的典型用法-s静默、-S出错时显示错误、-L跟随重定向。需要提醒的是直接管道执行远程脚本意味着你信任该脚本内容更稳妥的做法是先curl -o rvm-install.sh URL保存到本地、审查后再执行。四、高级用法4.1 综合场景命令表以下表格完整继承自 curl 清单“高级”部分| 命令 | 说明 | | :- | :- | |curl -L -s http://ipecho.net/plain, curl -L -s http://whatismijnip.nl| 获取本机公共 IP | |curl -u $username:$password http://repo.dennyzhang.com/README.txt| 带凭证的 curl | |curl -v -F key1value1 -F uploadlocalfilename URL| curl 上传 | |curl -k -v --http2 https://www.google.com/| 使用 HTTP/2 的 curl | |curl -T cryptopp552.zip -u test:test ftp://10.32.99.187/| curl 上传文件到 FTP | |curl -u test:test ftp://10.32.99.187/cryptopp552.zip -o cryptopp552.zip| curl 从 FTP 下载文件 | |curl -v -u admin:admin123 --upload-file package1.zip http://mysever:8081/dir/package1.zip| 使用凭证通过 HTTP 上传 |要点-T即--upload-file等价于把文件作为 PUT 请求体上传FTP 场景下则是上传文件--http2强制协商 HTTP/2 协议配合-v可以看到实际协商出的协议版本凭证建议从环境变量读取如-u $username:$password避免把明文密码写进脚本和 shell 历史。4.2 测量网站响应时间curl -s -w \ \nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n \ -o /dev/null https://www.google.com-wwrite-out会在传输完成后按模板输出自定义变量。本清单中用到的变量依次为DNS 解析耗时、TCP 连接建立耗时、应用层TLS握手耗时、重定向耗时、发起传输前的准备耗时、首字节TTFB耗时、总耗时。-o /dev/null丢弃响应体只保留计时信息适合把各阶段耗时拆开定位性能瓶颈在哪一层。4.3 检查远程资源是否可用curl -o /dev/null --silent -Iw %{http_code} https://example.com/my.remote.tarball.gz该命令组合了 HEAD 请求-I、静默模式--silent与只输出 HTTP 状态码-w %{http_code}执行结果只有一个三位数字如 200/404非常适合放在 CI 或监控脚本里做探活判断200表示资源可用404表示不存在。4.4 批量与自动化下载抓取页面中的所有 PNG 文件使用 GNU grep来自 原文档curl https://example.com | \ grep --only-matching src[^]*.[png] | \ cut -d\ -f2 | \ while read i; do curl https://example.com/${i} \ -o ${i##*/}; done思路是先用 curl 拉取页面用 grep 正则提取所有src...png路径cut取字段后逐个下载-o ${i##*/}以 URL 末段文件名保存。保持远程文件名下载curl --remote-name https://example.com/linux-distro.iso下载同时自定义文件名curl --remote-name http://example.com/index.html --output foo.html--remote-name会按远程文件名保存再加--output时则以--output指定的名字为准。断点续传curl --remote-name --continue-at - https://example.com/linux-distro.iso--continue-at -表示从本地文件已有大小处继续下载适合大文件下载中断后恢复。从多个域名批量下载curl 的 URL 大括号展开curl https://www.{example,w3,iana}.org/index.html --output file_#1.html{example,w3,iana}会展开为三个 URL 分别请求#1是第 1 个 URL 的占位符因此会生成file_example.html、file_w3.html、file_iana.html。下载一系列文件curl https://{foo,bar}.com/file_[1-4].webp --output #1_#2.webp[1-4]是数字范围展开#1、#2分别对应 URL 中两个花括号位置的值最终生成foo_file1.webp、foo_file2.webp、bar_file1.webp等文件。将输出重定向到文件$ curl http://url/file file也可以用 shell 重定向写文件效果等同于-o但-o/--output在脚本中更直观且不受 stdout 重定向策略影响。五、认证、文件输出与配置5.1 基本认证$ curl --user username:password http://example.com/ $ curl -u username:password http://example.com/两种写法等价。若密码中包含:、等特殊字符建议把-u参数放在 URL 之前或用文件方式传递避免解析歧义。5.2 写入文件而不是标准输出$ curl -o file http://url/file $ curl --output file http://url/file响应体写入file若希望“以远程文件的名字保存”则使用 4.4 节中的--remote-name与--output组合。5.3 执行远程脚本$ curl -s http://url/myscript.sh静默拉取远程脚本内容到标准输出如前述落地执行前建议先保存审查。5.4 使用配置文件curl -K file # 从文件中读取配置 curl --config file $HOME/.curlrc # 类 UNIX 系统中的默认配置文件-K/--config让把常用参数如代理、证书、默认头写进文件复用避免每次在命令行重复输入不显式指定时curl 会自动读取$HOME/.curlrc把团队内共享的默认参数放进该文件即可一劳永逸。配置文件格式与命令行选项一致optionvalue逐行书写。六、在 reference 仓库中延伸本清单位于 reference 项目的docs目录作为“命令”板块速查入口之一见 README 中 Curl 卡片其 源码文件 可直接查看完整原始表格。与 curl 常配合使用的主题在仓库中都有对应速查文档可按需跳转传输与协议FTP 速查、SSH 速查、HTTP 状态码、Nginx 速查安全与证书OpenSSL 速查数据处理jq 速查、Grep 速查、Sed 速查接口调试场景Elasticsearch 速查、MinIO 速查掌握以上参数组合后无论是接口联调、资源探活、大文件断点续传还是批量下载脚本都可以直接基于本清单中的命令快速组装出可用的 curl 调用。【免费下载链接】reference面向开发者的技术速查清单Cheat Sheets集合整理常见技术、工具与开发流程帮助快速查阅关键信息提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表