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

目录

  • 1. HTTP 请求
  • 2. 文件操作
    • 2.1 文件下载
    • 2.2 文件上传
    • 2.3 FTP 操作
  • 3. 代理和网络设置
  • 4. 身份验证
  • 5. 调试和信息显示
  • 6. more and more

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267430.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

结合ChatGPT和MINDSHOW自动生成PPT

总结/朱季谦 一、首先,通过chatGPT说明你的需求,学会提问是Ai时代最关键的一步。你需要提供一些关键信息,如果没有关键信息,就按照大纲方式让它设计,例如,我让它帮我写一份《2023年年中述职报告》的模版—…

项目管理进阶之序言

背景 可能任何一个程序猿/媛都有一个梦想,立志成为一个技术Leader,带领一个Team,完成一个组织中重要的Project。 有些人天赋异禀,光彩夺目,从小已形成的某些特质,足以让他/她胜任这个领域,我们…

第11章 GUI Page428 步骤七 设置圆,矩形,文字的前景色

运行效果: 关键代码: 分别设置圆,矩形,和文字的画笔颜色,其中文字的设置方法稍有不同 圆: 矩形: 文字:

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内(point in polygon)2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内(point …

2000-2021年全国各省三农指标数据(700+指标)

2000-2021年全国各省三农指标数据合集(700指标) 1、时间:2000-2021年 2、来源:整理自2001-2022年农村年鉴 3、范围:31省市 4、指标:、农村经济在国民经济中的地位、社会消费品零售额_亿元、社会消费品零…

持续集成交付CICD:Jira 发布流水线

目录 一、实验 1.环境 2.GitLab 查看项目 3.Jira 远程触发 Jenkins 实现合并 GitLab 分支 4.K8S master节点操作 5.Jira 发布流水线 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins…

Linux环境变量剖析

一、什么是环境变量 概念:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序所将使用到的信息&#xff0c…

Open3D 点云数据处理基础(Python版)

Open3D 点云数据处理基础(Python版) 文章目录 1 概述 2 安装 2.1 PyCharm 与 Python 安装 2.3 Anaconda 安装 2.4 Open3D 0.13.0 安装 2.5 新建一个 Python 项目 3 点云读写 4 点云可视化 2.1 可视化单个点云 2.2 同一窗口可视化多个点云 2.3…

蓝桥村的神秘农田

蓝桥村的神秘农田 问题描述 小蓝是蓝桥村的村长,他拥有一块神秘的农田。这块农田的奇特之处在于,每年可以种植两种作物,分别称为 "瑶瑶豆" 和 "坤坤果"。小蓝需要为每种作物选择一个整数的生长指数,瑶瑶豆的…

HEA---code

import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.animation import FuncAnimationfrom matplotlib.offsetbox import OffsetImage, AnnotationBbox# 创建一个画布和坐标轴对象 fig, ax plt.subplots() # 创建一个参数t,范围是0到2π t np.lins…

关于“Python”的核心知识点整理大全39

目录 ​编辑 14.1.5 将 Play 按钮切换到非活动状态 game_functions.py 14.1.6 隐藏光标 game_functions.py game_functions.py 14.2 提高等级 14.2.1 修改速度设置 settings.py settings.py settings.py game_functions.py 14.2.2 重置速度 game_functions.py 1…

TCGA超过1G的病理wsi数据下载-gdc-client

使用网页端下载TCGA超过1G的病理wsi数据,数据下载到1G后就不能完整下载。遂采用gdc-client下载。 Win 环境下新建这个文件夹放在系统盘进行储存,否则会报错:ERROR: Unable to write state file: [WinError 17] 系统无法将文件移到不同的磁盘…

Node 源项目定制化、打包并使用全过程讲解

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…

WGCLOUD快速部署方案 - 批量给Linux安装agent

有时候我们的Linux服务器比较多,一个一个安装比较花费时间,还要WGCLOUD提供了一个辅助工具wgcloud-bach-agent,可以批量给Linux服务器上传agent安装包,并自动解压和启动agent,可以大大减少我们的部署工作和时间 下载和…

无约束优化问题求解(4):牛顿法后续

目录 前言SR1, DFP, BFGS之间的关系 BB方法Reference 前言 Emm,由于上一篇笔记的字数超过了要求(这还是第一次- -),就把后续内容放到这篇笔记里面了,公式的标号仍然不变,上一篇笔记的连接在这:…

C++之多层 if-else-if 结构优化(三)

C之多层 if-else-if 结构优化(二)-CSDN博客 接上面的内容继续讲解多层 if-else-if结构优化 8、利用规则执行器来进行优化 8.1 业务场景介绍 if (未注册用户){return false; }if (是否国外用户) {return false; }if (刷单用户) {return false; }if (未付费用户 && 不…

中国肺癌情形

写在前面 再看下中国肺癌的情形 综述 文章名期刊影响因子Non-small cell lung cancer in ChinaCancer Commun16.2 摘要 风险因子:吸烟史、家族史、放射暴露、空气污染、慢性肺病 晚期PD-1/PD-L1抑制剂单药使用或联合化疗药物作为标准治疗。局部肺癌晚期&#xf…

铁山靠之——HarmonyOS基础 - 1.0

HarmonyOS学习第一章 一、HarmonyOS简介1.1 安装和使用DevEco Studio1.2 环境配置1.3 项目创建1.4 运行程序1.5 基本工程目录1.5.1 工程级目录1.5.2 模块级目录1.5.3 app.json51.5.4 module.json51.5.5 main_pages.json 二、TypeScript快速入门2.1 简介2.2 基础类型2.2.1 布尔值…

Python 爬虫之下载视频(三)

批量下载某B主视频 文章目录 批量下载某B主视频前言一、基本思路二、确定遍历循环结构三、基本思路中第12步三、基本思路中第345步总结 前言 上一篇讲了如何去获取标题和视频链接。这篇就跟大家讲一下如何去下载这些视频。本篇会以标题和 视频链接 为突破口,来寻找…

day09

文章目录 一、jQuery简介1. 介绍2. 使用1)引入2)工厂函数 - $()3)原生JS对象与jQuery对象4)jQuery获取元素5)操作元素内容6)操作标签属性7)操作标签样式8)根据层级结构获取元素9&…