curl命令:从基础到高级用法详解

安装与验证

curl预装在大多数Linux发行版和macOS中。Windows用户可从官网下载二进制包。验证安装:

curl --version

输出应显示版本信息及支持的协议列表(如HTTP/HTTPS/FTP)。

基础请求语法

基本命令结构:

curl [选项] [URL]

GET请求(默认): curl https://api.example.com/data

显示详细过程(-v): curl -v https://example.com # 显示请求头/响应头

核心功能详解

1. 数据控制

选项

作用

示例

-o FILE

保存到文件

curl -o page.html https://example.com

-O

使用远程文件名保存

curl -O https://example.com/image.png

-d DATA

POST表单数据

curl -d "name=Alice&age=30" https://api.example.com/users

-F

文件上传

curl -F "file=@photo.jpg" https://upload.example.com

2. 头部操作

# 自定义请求头

curl -H "Content-Type: application/json" https://api.example.com

# 查看响应头

curl -I https://example.com # 仅显示头部

3. 认证机制

# 基础认证

curl -u username:password https://secure.example.com

# Bearer Token

curl -H "Authorization: Bearer TOKEN" https://api.example.com

4. 网络调试

curl --limit-rate 100K https://largefile.example.com # 限速100KB/s

curl --retry 5 https://unstable.example.com # 失败重试5次

curl --proxy http://proxy.example.com:8080 https://target.com

进阶应用场景

JSON API交互

# POST JSON数据

curl -H "Content-Type: application/json" \

-d '{"title":"Hello","content":"World"}' \

https://api.example.com/posts

文件分块下载

curl -r 0-999 https://example.com/large.zip -o part1.zip # 下载0-999字节

curl -r 1000-1999 https://example.com/large.zip -o part2.zip

Cookie会话保持

# 保存Cookie到文件

curl -c cookies.txt https://login.example.com

# 使用Cookie访问

curl -b cookies.txt https://dashboard.example.com

错误处理指南

常见错误码及解决方案:

错误码

含义

解决方法

6

无法解析主机

检查DNS或使用--resolve参数

7

连接失败

检查网络/防火墙设置

22

HTTP 4xx/5xx响应

检查URL/权限/请求参数

60

SSL证书错误

添加-k跳过验证(不推荐)

调试建议:

curl -v --trace-ascii debug.log https://problematic-site.com

安全最佳实践

敏感数据处理:

# 使用环境变量避免密码泄露

export API_KEY="secret"

curl -H "Authorization: $API_KEY" https://api.example.com

证书验证:

始终使用https

避免-k(除非测试环境)

自定义CA证书:curl --cacert /path/to/ca.pem https://site.com

输入过滤:

# 使用引号防止注入攻击

curl "https://api.example.com/search?q=$(echo $QUERY | sed 's/[^a-z]//g')"

性能优化技巧

启用HTTP/2: curl --http2 https://example.com

连接复用: curl -v --next https://example.com/page2 \

--next https://example.com/page3

压缩传输: curl --compressed https://large-content.example.com

替代方案对比

工具

优势

劣势

curl

协议支持全面/脚本集成强

命令行交互不够直观

wget

递归下载/断点续传优秀

功能较单一

HTTPie

人性化输出/易读语法

依赖Python环境

实战案例:监控网站状态

创建监控脚本check_site.sh:

#!/bin/bash

RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" https://example.com)

if [ "$RESPONSE" -ne 200 ]; then

echo "ALERT: Site down! Code $RESPONSE" | mail -s "Site Failure" admin@example.com

fi

通过cron定时运行:

* * * * * /path/to/check_site.sh # 每分钟检查

扩展学习资源

官方文档:man curl 或 curl.se/docs/

交互式教程:https://reqbin.com/curl

在线沙盒:https://www.online-ide.com/online_curl_editor

Copyright © 2088 网络游戏活动中心 - 最新游戏活动汇总 All Rights Reserved.
友情链接