关于 curl 常用命令的使用整理【不定期更新】

2023-12-24 13:29:58

curl 是一个用于在命令行下进行数据传输的工具,支持多种协议,包括 HTTPHTTPSFTPFTPSSCPSFTP 等。它通常用于从网页下载数据、上传文件,或者与 Web 服务进行交互。该命令设计为无需用户交互即可工作。

curl 可以在许多场景中使用,下面只是整理了在日常工作中常用的命令,后续如果有用到其他的命令再更新。

curl 命令的参数挺多的,实际用的时候可直接参考 curl 的文档。

# 查看 curl 的文档
man curl 
# or
curl --help

在这里插入图片描述

1. HTTP 请求

以下是一些常见的 curl HTTP 请求示例:

  1. 发送简单的 GET 请求:

    curl http://example.com
    
  2. 发送带参数的 GET 请求:

    curl "http://example.com/api?param1=value1&param2=value2"
    
  3. 发送 POST 请求(JSON 数据):

    curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/api
    
  4. 发送 POST 请求(表单数据):

    curl -X POST -d "param1=value1&param2=value2" http://example.com/resource
    
  5. 使用特定的请求头发送 GET 请求:

    curl -H "Authorization: Bearer token123" http://example.com/api/data
    
  6. 显示详细的请求和响应信息:

    curl -v http://example.com
    
  7. 跟踪重定向并显示详细信息:

    curl -L -v http://example.com
    
  8. 使用代理发送请求:

    curl -x proxy.example.com:8080 http://example.com
    
  9. 基本认证(用户名和密码)发送请求:

    curl -u username:password http://example.com
    
  10. 上传文件(HTTP PUT 请求):

    curl -X PUT -d "@localfile.txt" http://example.com/resource
    
  11. 发送 DELETE 请求:

    curl -X DELETE http://example.com/resource/123
    
  12. 使用 Cookies:

    curl -b "cookie1=value1;cookie2=value2" http://example.com
    

    -b 选项用于发送请求时携带 Cookies。

  13. 保存 Cookies 到文件并加载:

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

    -c 选项用于保存 Cookies 到文件,-b 用于加载 Cookies 文件。

  14. 设置超时时间:

    curl --max-time 10 http://example.com
    

    --max-time 用于设置最大请求时间(秒),超过此时间将中止请求。

  15. 限制带宽:

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

    --limit-rate 用于设置下载速度限制。

  16. 模拟浏览器 User-Agent:

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

    -A 选项用于设置 User-Agent。

2. 文件操作

2.1 文件下载

  1. 简单下载文件:

    curl -O http://example.com/file.zip
    

    -O 选项将远程文件保存到本地,并使用远程文件名。

  2. 下载文件并保存为指定文件名:

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

    使用 -o 选项可以指定本地文件的名称。

  3. 下载文件并显示下载进度条:

    curl -# -O http://example.com/largefile.zip
    

    -# 选项显示下载进度条。

  4. 断点续传下载(续传已下载的部分):

    curl -C - -O http://example.com/largefile.zip
    

    -C - 选项用于断点续传。

2.2 文件上传

  1. 简单上传文件:

    curl -T localfile.txt http://example.com/upload/
    

    -T 选项用于上传本地文件。

  2. 上传文件并显示上传进度条:

    curl -# -T localfile.txt http://example.com/upload/
    

    -# 选项显示上传进度条。

  3. 使用 HTTP POST 上传文件:

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

    使用 -F 选项可以通过 POST 请求上传文件。

  4. 使用 FTP 上传文件:

    curl -T localfile.txt ftp://ftp.example.com/upload/
    

    通过 FTP 协议上传文件。

  5. 上传文件并设置文件名:

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

    使用 -F 选项设置远程文件名。

2.3 FTP 操作

  1. 列出 FTP 目录内容:

    curl ftp://example.com
    
  2. 下载 FTP 文件:

    curl -O ftp://example.com/file.zip
    
  3. 上传文件到 FTP:

    curl -T localfile.txt ftp://example.com/upload/
    

3. 代理和网络设置

  1. 使用 HTTP 代理:

    curl -x http://proxy.example.com:8080 http://example.com
    

    这个例子中,http://proxy.example.com:8080 是您的 HTTP 代理的地址和端口。

  2. 使用 SOCKS5 代理:

    curl --proxy socks5://proxy.example.com:1080 http://example.com
    

    这个例子中,socks5://proxy.example.com:1080 是您的 SOCKS5 代理的地址和端口。

  3. 使用代理并提供用户名和密码:

    curl -x http://user:password@proxy.example.com:8080 http://example.com
    

    如果代理需要用户名和密码进行身份验证,您可以将它们包含在 URL 中。

  4. 设置超时时间:

    curl --max-time 10 http://example.com
    

    --max-time 选项用于设置最大请求时间,即超过该时间将中止请求。

  5. 限制带宽:

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

    --limit-rate 选项用于设置下载速度限制。

  6. 忽略证书检查(不安全,谨慎使用):

    curl --insecure https://example.com
    

    --insecure 选项用于禁用对 SSL 证书的验证。这通常在测试环境或确信连接安全的情况下使用。

4. 身份验证

curl 中,您可以使用不同的选项来进行身份认证。以下是一些示例,演示如何使用 curl 进行基本认证和其他身份认证方式:

  1. 基本认证(用户名和密码):

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

    在这个例子中,-u 选项用于提供用户名和密码,格式为 username:password

  2. 使用 API 密钥进行认证:

    curl -H "Authorization: Bearer your_api_key" http://example.com/api/data
    

    这个例子中,-H 选项用于设置请求头,包括 Authorization 字段,值为 Bearer 后跟您的 API 密钥。

  3. 使用客户端证书进行认证:

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

    在这个例子中,--cert--key 选项用于指定客户端证书和私钥文件进行 SSL 客户端身份认证。

  4. 使用 OAuth 2.0 令牌进行认证:

    curl -H "Authorization: Bearer your_access_token" http://example.com/resource
    

    这个例子中,-H 选项用于设置请求头,包括 Authorization 字段,值为 Bearer 后跟您的 OAuth 2.0 访问令牌。

5. 调试和信息显示

  1. 显示请求和响应头信息:

    curl -i http://example.com
    

    使用 -i 选项,curl 将显示包括响应头在内的详细信息。

  2. 显示请求和响应的详细信息(包括通信过程):

    curl -v http://example.com
    

    使用 -v 选项,curl 将显示通信过程中的详细信息,包括请求和响应头。

  3. 跟踪重定向并显示详细信息:

    curl -L -v http://example.com
    

    在使用 -L 选项的同时,结合 -v 选项,curl 将跟踪重定向并显示详细信息。

  4. 显示进度条:

    curl -# -O http://example.com/largefile.zip
    

    使用 -# 选项,curl 将显示下载进度条,有助于了解下载进度。

  5. 使用 --trace 选项记录通信过程到文件:

    curl --trace trace.log http://example.com
    

    --trace 选项用于将通信过程记录到指定文件中,以便后续分析。

  6. 显示 DNS 查询信息:

    curl -v http://example.com --trace-ascii /dev/stdout | grep "Looking up"
    

    使用 -v 选项显示详细信息,结合 --trace-ascii 选项将通信过程记录到标准输出,然后使用 grep 过滤 DNS 查询信息。

  7. 执行健康检查(检查网站是否正常工作):

    curl -sSf http://example.com > /dev/null || echo "Site is down"
    

    在这个例子中,-sSf 选项用于静默模式(不显示进度条),并在请求失败时返回非零退出码,> /dev/null 用于将输出重定向到空设备,最后通过 || 判断请求是否失败。

  8. 获取网站的 IP 地址:

    curl -s http://example.com | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
    

    这个例子中,-s 选项用于静默模式,grep 结合正则表达式用于提取页面中的 IP 地址。

  9. 检查网页内容是否包含特定关键词:

    curl -s http://example.com | grep -q "keyword" && echo "Keyword found"
    

    使用 -s 选项静默模式,grep -q 用于在输出中查找关键词,成功匹配则返回零退出码。

6. more and more

文章来源:https://blog.csdn.net/peng2hui1314/article/details/135179797
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。