curl命令用法详解

curl 是一个命令行工具,它允许你向服务器发送请求,并从服务器接收响应。它支持多种协议,包括 HTTP、HTTPS、FTP、SMTP 等。curl 是一个非常强大的工具,它可以用于测试、调试和开发。

下面我将详细介绍一些常见的 curl 命令用法,并提供相应的例子。

  1. 基本的 GET 请求:
    使用 curl 发送一个基本的 GET 请求,只需提供 URL 即可。

curl http://example.com

      2. 包含头部信息的 GET 请求:
          使用 -i 选项来包括 HTTP 响应的头部信息

curl -i http://example.com

      3. 只获取头部信息:
使用 -I 选项只获取头部信息,不下载页面内容。

curl -I http://example.com

      4. 发送 POST 请求:
使用 -X POST 选项来发送一个 POST 请求。你可以使用 -d 选项来添加要发送的数据。

curl -X POST -d "param1=value1&param2=value2" http://example.com/resource

      5. 发送 PUT 请求:
类似于 POST 请求,你也可以使用 -X PUT 来发送 PUT 请求。

curl -X PUT -d "@data.json" http://example.com/resource

     6. 使用自定义请求头:
使用 -H 选项来添加自定义请求头。

curl -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" http://example.com

      7. 保存响应到文件:
使用 -o 选项将输出保存到文件中。

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

      8. 从文件中读取多个 URL:
使用 -K 选项从文件中读取 curl 命令的参数。

curl -K urls.txt

其中 urls.txt 文件包含了一系列的 curl 命令参数。

      9. 断点续传:
使用 -C - 选项来继续之前中断的下载。

curl -C - -o file.zip http://example.com/file.zip

     10. 跟随重定向:
使用 -L 选项让 curl 跟随服务器的重定向。

curl -L http://example.com

      11. 发送 JSON 数据:
使用 -H 添加 Content-Type: application/json 请求头,并使用 -d 发送 JSON 数据。

curl -H "Content-Type: application/json" -X POST -d '{"key1":"value1", "key2":"value2"}' http://example.com/api

     12. 使用证书进行 HTTPS 请求:
使用 --cert 和 --key 选项来提供客户端证书和私钥。

curl --cert client.pem --key key.pem https://secure.example.com

     13. 设置最大传输时间:
使用 -m 或 --max-time 选项来设置最大传输时间(秒)。

curl -m 10 http://example.com

     14. 使用代理:
使用 -x 或 --proxy 选项来设置代理服务器。

curl -x http://proxyserver:port http://example.com

    15. 显示传输统计信息:
使用 -w 或 --write-out 选项来定制输出的统计信息。

curl -w "Time: %{time_total}\n" http://example.com

    16. 自定义输出格式:

使用 -w 选项,你可以指定一个自定义的格式来输出 curl 操作的详细信息

curl -w "HTTP Code: %{http_code}\nTime Taken: %{time_total}\n" http://example.com

     17.  静默模式:
使用 -s 选项可以使 curl 在执行时不输出任何东西,只显示错误信息。

curl -s http://example.com

     18. 上传文件:
使用 -F 选项可以上传文件。这通常用于模拟表单上传。

curl -F "file=@localfile.txt" http://example.com/upload

      19. 限制下载速度:
使用 --limit-rate 选项可以限制下载速度,这对于测试慢速网络环境很有用。

curl --limit-rate 100k http://example.com

      20. 使用 cookie:
使用 -b 选项可以发送 cookie,-c 选项可以保存服务器响应中的 cookie 到文件。

curl -b cookies.txt -c newcookies.txt http://example.com

      21.  指定 HTTP 方法:
使用 -X 选项可以指定要使用的 HTTP 方法,例如 DELETE。

curl -X DELETE http://example.com/resource

     22. 下载文件的一部分:
使用 --range 选项可以下载文件的一部分,这在下载大文件或者进行断点续传时很有用。

curl --range 0-999 -o part1.txt http://example.com/bigfile.txt

     23. 解析响应头:
使用 -D 选项可以将响应头保存到一个文件中,便于后续分析。

curl -D headers.txt http://example.com

      24. 使用 SOCKS5 代理:
使用 --socks5 选项可以通过 SOCKS5 代理来发送请求。

curl --socks5 proxyhost:proxyport http://example.com

      25. 指定网络接口:
使用 --interface 选项可以指定一个网络接口,使请求从该接口发出。

curl --interface eth0 http://example.com

     26. 解析 .netrc 文件:
使用 -n 选项可以让 curl 读取用户的 .netrc 文件来获取用户名和密码。

curl -n http://example.com

    27. 指定 SSL/TLS 版本:
使用 --tlsv1.2 之类的选项可以指定 SSL/TLS 的版本。

curl --tlsv1.2 https://example.com

    28. 验证 SSL 证书:
使用 -k 或 --insecure 选项可以告诉 curl 忽略 SSL 证书验证。

curl -k https://example.com

    29. 设置请求来源:
使用 -e 选项可以设置请求的来源页 (HTTP Referer)。

curl -e http://referrer.com http://example.com

    30. 设置用户代理:
使用 -A 选项可以设置用户代理 (User-Agent) 字符串。

curl -A "Mozilla/5.0" http://example.com

    31. 发送邮件:
curl 也可以用来发送邮件,例如通过 SMTP 协议。

curl smtp://mail.example.com --mail-from user@example.com --mail-rcpt receiver@example.com --upload-file email.txt

   其中 email.txt 包含了邮件的头部和正文内容。

    32. 并行下载:
curl 从版本 7.66.0 开始支持 --parallel 和 --parallel-max 选项,允许并行下载多个文件。

curl --parallel --parallel-max 10 -O http://example.com/file1 -O http://example.com/file2

    33. 使用配置文件:
curl 可以使用 -K 或 --config 选项读取配置文件,配置文件中可以包含一系列 curl 命令行选项。

curl -K config.txt http://example.com

其中 config.txt 包含了一系列的 curl 命令参数。

    34. DNS 解析覆盖:
使用 --resolve 选项可以指定特定主机名对应的 IP 地址,这在 DNS 解析不正确或测试环境中很有用。

curl --resolve example.com:80:127.0.0.1 http://example.com

    35. 使用 UNIX 套接字:
curl 可以通过 UNIX 套接字连接到服务,这在与 Docker 容器通信时特别有用。

curl --unix-socket /var/run/docker.sock http://localhost/v1.24/containers/json

    36. FTP 上传和下载:
curl 支持 FTP 协议,可以用来上传或下载文件。

# 下载
curl ftp://ftp.example.com/file.txt -u username:password -o local_file.txt

# 上传
curl -T local_file.txt ftp://ftp.example.com/ -u username:password

    37. 设置最大文件大小:
使用 --max-filesize 选项可以设置下载文件的最大大小,超过这个大小的文件将不会下载。

curl --max-filesize 1000000 http://example.com/bigfile

    38. 使用 GSS/NTLM 认证:
curl 支持 GSS/NTLM 认证,这在与某些 Windows 服务器交互时可能需要。

curl --ntlm -u username:password http://example.com

    39. 设置连接超时:
使用 --connect-timeout 选项可以设置连接超时时间。

curl --connect-timeout 10 http://example.com

    40. 自动解压缩:
使用 --compressed 选项,curl 会自动解压缩支持的压缩格式(如 gzip)的内容。

curl --compressed http://example.com

curl 的功能非常强大,几乎可以满足所有的网络请求需求。要完全掌握它的所有用法,最好的方法是实践和查阅官方文档。随着 curl 版本的更新,还可能会增加新的选项和特性,所以了解如何查阅最新的帮助信息也是非常重要的。

posted @ 2023-12-11 10:31  jarsing  阅读(612)  评论(0编辑  收藏  举报