关于 curl 常用命令的使用整理【不定期更新】
curl 是一个用于在命令行下进行数据传输的工具,支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等。它通常用于从网页下载数据、上传文件,或者与 Web 服务进行交互。该命令设计为无需用户交互即可工作。
curl 可以在许多场景中使用,下面只是整理了在日常工作中常用的命令,后续如果有用到其他的命令再更新。
curl 命令的参数挺多的,实际用的时候可直接参考 curl 的文档。
# 查看 curl 的文档
man curl
# or
curl --help

1. HTTP 请求
以下是一些常见的 curl HTTP 请求示例:
-
发送简单的 GET 请求:
curl http://example.com -
发送带参数的 GET 请求:
curl "http://example.com/api?param1=value1¶m2=value2" -
发送 POST 请求(JSON 数据):
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/api -
发送 POST 请求(表单数据):
curl -X POST -d "param1=value1¶m2=value2" http://example.com/resource -
使用特定的请求头发送 GET 请求:
curl -H "Authorization: Bearer token123" http://example.com/api/data -
显示详细的请求和响应信息:
curl -v http://example.com -
跟踪重定向并显示详细信息:
curl -L -v http://example.com -
使用代理发送请求:
curl -x proxy.example.com:8080 http://example.com -
基本认证(用户名和密码)发送请求:
curl -u username:password http://example.com -
上传文件(HTTP PUT 请求):
curl -X PUT -d "@localfile.txt" http://example.com/resource -
发送 DELETE 请求:
curl -X DELETE http://example.com/resource/123 -
使用 Cookies:
curl -b "cookie1=value1;cookie2=value2" http://example.com-b选项用于发送请求时携带 Cookies。 -
保存 Cookies 到文件并加载:
curl -c cookies.txt http://example.com curl -b cookies.txt http://example.com-c选项用于保存 Cookies 到文件,-b用于加载 Cookies 文件。 -
设置超时时间:
curl --max-time 10 http://example.com--max-time用于设置最大请求时间(秒),超过此时间将中止请求。 -
限制带宽:
curl --limit-rate 100k http://example.com--limit-rate用于设置下载速度限制。 -
模拟浏览器 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 文件下载
-
简单下载文件:
curl -O http://example.com/file.zip-O选项将远程文件保存到本地,并使用远程文件名。 -
下载文件并保存为指定文件名:
curl -o local_filename.zip http://example.com/file.zip使用
-o选项可以指定本地文件的名称。 -
下载文件并显示下载进度条:
curl -# -O http://example.com/largefile.zip-#选项显示下载进度条。 -
断点续传下载(续传已下载的部分):
curl -C - -O http://example.com/largefile.zip-C -选项用于断点续传。
2.2 文件上传
-
简单上传文件:
curl -T localfile.txt http://example.com/upload/-T选项用于上传本地文件。 -
上传文件并显示上传进度条:
curl -# -T localfile.txt http://example.com/upload/-#选项显示上传进度条。 -
使用 HTTP POST 上传文件:
curl -X POST -F "file=@localfile.txt" http://example.com/upload/使用
-F选项可以通过 POST 请求上传文件。 -
使用 FTP 上传文件:
curl -T localfile.txt ftp://ftp.example.com/upload/通过 FTP 协议上传文件。
-
上传文件并设置文件名:
curl -F "file=@localfile.txt;filename=remote_filename.txt" http://example.com/upload/使用
-F选项设置远程文件名。
2.3 FTP 操作
-
列出 FTP 目录内容:
curl ftp://example.com -
下载 FTP 文件:
curl -O ftp://example.com/file.zip -
上传文件到 FTP:
curl -T localfile.txt ftp://example.com/upload/
3. 代理和网络设置
-
使用 HTTP 代理:
curl -x http://proxy.example.com:8080 http://example.com这个例子中,
http://proxy.example.com:8080是您的 HTTP 代理的地址和端口。 -
使用 SOCKS5 代理:
curl --proxy socks5://proxy.example.com:1080 http://example.com这个例子中,
socks5://proxy.example.com:1080是您的 SOCKS5 代理的地址和端口。 -
使用代理并提供用户名和密码:
curl -x http://user:password@proxy.example.com:8080 http://example.com如果代理需要用户名和密码进行身份验证,您可以将它们包含在 URL 中。
-
设置超时时间:
curl --max-time 10 http://example.com--max-time选项用于设置最大请求时间,即超过该时间将中止请求。 -
限制带宽:
curl --limit-rate 100k http://example.com--limit-rate选项用于设置下载速度限制。 -
忽略证书检查(不安全,谨慎使用):
curl --insecure https://example.com--insecure选项用于禁用对 SSL 证书的验证。这通常在测试环境或确信连接安全的情况下使用。
4. 身份验证
在 curl 中,您可以使用不同的选项来进行身份认证。以下是一些示例,演示如何使用 curl 进行基本认证和其他身份认证方式:
-
基本认证(用户名和密码):
curl -u username:password http://example.com在这个例子中,
-u选项用于提供用户名和密码,格式为username:password。 -
使用 API 密钥进行认证:
curl -H "Authorization: Bearer your_api_key" http://example.com/api/data这个例子中,
-H选项用于设置请求头,包括Authorization字段,值为 Bearer 后跟您的 API 密钥。 -
使用客户端证书进行认证:
curl --cert client.pem --key client-key.pem https://example.com在这个例子中,
--cert和--key选项用于指定客户端证书和私钥文件进行 SSL 客户端身份认证。 -
使用 OAuth 2.0 令牌进行认证:
curl -H "Authorization: Bearer your_access_token" http://example.com/resource这个例子中,
-H选项用于设置请求头,包括Authorization字段,值为 Bearer 后跟您的 OAuth 2.0 访问令牌。
5. 调试和信息显示
-
显示请求和响应头信息:
curl -i http://example.com使用
-i选项,curl将显示包括响应头在内的详细信息。 -
显示请求和响应的详细信息(包括通信过程):
curl -v http://example.com使用
-v选项,curl将显示通信过程中的详细信息,包括请求和响应头。 -
跟踪重定向并显示详细信息:
curl -L -v http://example.com在使用
-L选项的同时,结合-v选项,curl将跟踪重定向并显示详细信息。 -
显示进度条:
curl -# -O http://example.com/largefile.zip使用
-#选项,curl将显示下载进度条,有助于了解下载进度。 -
使用
--trace选项记录通信过程到文件:curl --trace trace.log http://example.com--trace选项用于将通信过程记录到指定文件中,以便后续分析。 -
显示 DNS 查询信息:
curl -v http://example.com --trace-ascii /dev/stdout | grep "Looking up"使用
-v选项显示详细信息,结合--trace-ascii选项将通信过程记录到标准输出,然后使用grep过滤 DNS 查询信息。 -
执行健康检查(检查网站是否正常工作):
curl -sSf http://example.com > /dev/null || echo "Site is down"在这个例子中,
-sSf选项用于静默模式(不显示进度条),并在请求失败时返回非零退出码,> /dev/null用于将输出重定向到空设备,最后通过||判断请求是否失败。 -
获取网站的 IP 地址:
curl -s http://example.com | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"这个例子中,
-s选项用于静默模式,grep结合正则表达式用于提取页面中的 IP 地址。 -
检查网页内容是否包含特定关键词:
curl -s http://example.com | grep -q "keyword" && echo "Keyword found"使用
-s选项静默模式,grep -q用于在输出中查找关键词,成功匹配则返回零退出码。
6. more and more
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!