Skip to content

curl 命令:数据传输工具

1. 命令简介

curl 是一个用于数据传输的命令行工具和库。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等。curl 不仅可以下载和上传文件,还可以用于测试 API、发送 HTTP 请求、调试网络问题等。

2. 基本语法

bash
curl [选项] [URL]

3. 常用选项

  • -o:将输出写入文件
  • -O:以远程文件名保存下载的文件
  • -L:跟随重定向
  • -I--head:仅显示响应头
  • -X:指定 HTTP 请求方法
  • -H:添加 HTTP 请求头
  • -d:发送 POST 数据
  • -u:指定用户名和密码
  • -k:允许不安全的 SSL 连接

4. 基础使用示例

  1. 获取网页内容:

    bash
    curl https://example.com
  2. 下载文件:

    bash
    curl -O https://example.com/file.zip
  3. 跟随重定向:

    bash
    curl -L https://example.com
  4. 显示响应头:

    bash
    curl -I https://example.com

5. 进阶使用技巧

  1. 发送 POST 请求:

    bash
    curl -X POST -d "param1=value1&param2=value2" https://example.com/api
  2. 发送 JSON 数据:

    bash
    curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://example.com/api
  3. 使用认证:

    bash
    curl -u username:password https://example.com/secure
  4. 使用代理:

    bash
    curl -x proxy.example.com:8080 https://example.com

6. 实用示例

  1. 测试 REST API:

    bash
    curl -X GET "https://api.example.com/users" -H "accept: application/json"
  2. 上传文件:

    bash
    curl -F "file=@localfile.jpg" https://example.com/upload
  3. 检查网站 SSL 证书:

    bash
    curl -vI https://example.com
  4. 模拟浏览器请求:

    bash
    curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" https://example.com

7. 注意事项

  • 使用 -k 选项忽略 SSL 证书验证时要谨慎,可能会导致安全风险。
  • 在处理敏感数据时,避免在命令行中直接输入密码,可以使用 -u 选项后跟冒号来交互式输入密码。
  • 大文件传输时,考虑使用 wget 或其他专门的下载工具。

8. 相关命令

  • wget:另一个常用的下载工具
  • httpie:一个用户友好的 HTTP 客户端
  • postman:API 开发和测试工具(图形界面)
  • netcat:网络工具包

9. 技巧与建议

  1. 使用 --trace 选项进行详细的调试:

    bash
    curl --trace debug.txt https://example.com
  2. 保存和使用 cookie:

    bash
    curl -c cookies.txt -b cookies.txt https://example.com
  3. 测试网站响应时间:

    bash
    curl -o /dev/null -s -w "Time: %{time_total}\n" https://example.com
  4. 在脚本中使用 curl 获取外部数据:

    bash
    weather=$(curl -s "http://wttr.in/London?format=%C+%t")
    echo "Current weather in London: $weather"

curl 是一个非常强大和灵活的网络工具。它不仅可以用于简单的文件下载,还可以用于复杂的 API 测试、网络调试和自动化脚本。对于开发者、系统管理员和网络工程师来说,curl 是一个必不可少的工具。熟练使用 curl 可以极大地提高网络相关任务的效率和准确性。