Linux curl 命令:网络请求调试与API测试利器
curl (Client URL) 是 Linux 系统中当之无愧的网络交互“瑞士军刀”。无论是验证服务是否存活、调试 RESTful 接口、下载远程资源,还是测试 SSL 证书、模拟移动端请求,它都能胜任。相比于 Postman 等图形化工具,curl 的优势在于可以无缝集成到 Shell 脚本中,实现自动化测试与监控。
最基础的用法
curl https://www.example.com
不加任何参数时,curl 会发起一个标准的 HTTP GET 请求,并将服务器返回的 Body 内容直接打印到标准输出(终端)。如果返回的是 HTML,你会看到满屏的代码;如果是 JSON,则会直接显示数据结构。
实际使用中,高频场景与命令组合
1. 查看详细的请求与响应过程
当接口报错或行为不符合预期时,你需要知道“到底发了什么”以及“服务器回了什么头”。
curl -v https://www.example.com
-v (verbose) 模式会输出完整的握手过程、请求头(>)、响应头(<)以及响应体。这是排查 403 Forbidden、302 Redirect 或 CORS 问题的第一步。
2. 发送 POST 请求与 JSON 数据
现代后端开发离不开 JSON 交互,curl 可以通过 -d 或 --data 参数轻松模拟。
curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"123456"}' http://localhost:8080/login
-X POST: 指定请求方法。-H: 自定义请求头,这里必须显式声明 Content-Type,否则服务端可能无法解析 JSON。-d: 携带请求体数据。
3. 只获取响应头或只保存文件
有时候你不需要看内容,只想检查状态码;或者只想安静地下载文件。
只看头信息:
curl -I https://www.example.com
-I (HEAD) 仅返回 HTTP Header,常用于健康检查脚本。
下载并保存文件:
curl -O https://example.com/file.tar.gz
-O (大写) 会使用远程文件名保存;-o filename (小写) 则可以自定义本地文件名。加上 -s (silent) 可以隐藏进度条,适合脚本后台运行。
4. 处理认证与 Cookie
Basic Auth:
curl -u user:password https://api.example.com/resource
携带 Cookie:
curl -b "session_id=abc123" https://example.com/profile
保存并使用 Cookie Jar:
curl -c cookies.txt -d "user=admin&pass=123" http://login.example.com
curl -b cookies.txt http://admin.example.com/dashboard
先登录将 Cookie 存入文件,后续请求直接读取文件,完美模拟浏览器会话。
5.性能测试与耗时分析
不需要压测工具,curl 自身就能提供关键的性能指标。
curl -o /dev/null -s -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" https://www.example.com
这条命令会将响应体丢弃(-o /dev/null),静默执行(-s),并通过 -w 格式化输出 DNS 解析、TCP 连接、首字节时间(TTFB)和总耗时,快速定位网络慢在哪一环。
如果不知道如何下手,可以先尝试
curl --help all | grep -A 2 "proxy"
当你身处公司内网需要配置代理,或者遇到 SSL 证书报错想临时跳过验证(-k)时,直接在帮助文档中搜索关键词是最快的学习方式。
或者,如果你想把 curl 命令转化为其他语言(如 Python requests、Java OkHttp)的代码,可以使用在线工具 “curlconverter”,它能自动帮你完成转换。
- 点赞
- 收藏
- 关注作者
评论(0)