文章目录

  • 1.命令简介
  • 2.命令格式
  • 3.选项说明
  • 4.常用示例
  • 参考文献

1.命令简介

curl 命令是一个利用 URL 规则在 Shell 终端命令行下工作的文件传输工具。它支持文件的上传和下载,是综合传输工具,但按使用习惯,一般称 curl 为下载工具。curl 被设计为无需用户交互即可工作。

作为一款强力的下载工具,curl 支持包括 HTTP、HTTPS、FTP、SFTP、SCP 等众多协议,还提供了大量有用的技巧,如代理支持、用户身份验证、FTP 上传、HTTP post、SSL 连接、cookies、文件传输恢复、Metalink 等等。

一般我们使用 curl 作为 HTTP(s) 的客户端访问指定链接。

2.命令格式

curl [OPTIONS] [URL...]

3.选项说明

-#, --progress-bar显示进度条
-a, --append上传文件时,附加到目标文件
-A, --user-agent STRING设置用户代理发送给服务器
--anyauth可以使用“任何”身份验证方法
-b, --cookie <NAME=STRING/FILE>cookie 字符串或文件读取位置
--basic使用 HTTP 基本验证
-B, --use-ascii使用 ASCII 文本传输
-c, --cookie-jar FILE操作结束后把 cookie 写入指定文件中
-C, --continue-at OFFSET断点续转
-d, --data DATA以 HTTP POST 方式传送指定格式的数据。如 JSON 串,相应地 Header 中的 Content-Type 字段需设为 application/json。如果传输文件,使用选项 -T
--data-ascii DATA以 ascii 的方式 post 数据
--data-binary DATA以二进制的方式 post 数据
--negotiate使用 HTTP 身份验证
--digest使用数字身份验证
--disable-eprt禁止使用 EPRT 或 LPRT
--disable-epsv禁止使用 EPSV
-D, --dump-header FILE把 header 信息写入到指定文件中
--egd-file FILE为随机数据(SSL)设置EGD socket路径
--tcp-nodelay使用 TCP_NODELAY 选项
-e, --referer来源网址
-E, --cert CERT[:PASSWD]客户端证书文件和密码 (SSL)--cert-type TYPE证书文件类型 (DER/PEM/ENG) (SSL)
--key KEY私钥文件名 (SSL)
--key-type TYPE私钥文件类型 (DER/PEM/ENG) (SSL)
--pass PASS私钥密码 (SSL)
--engine NAME选择用于密码操作的OpenSSL加密引擎
--cacert FILECA 证书 (SSL)
--capath <directory>  CA目录 (made using c_rehash) to verify peer against (SSL)
--ciphers LISTSSL 密码
--compressed要求返回是压缩的形势 (using deflate or gzip)
--connect-timeout SECONDS设置最大请求时间
--create-dirs建立本地目录的目录层次结构
--crlf上传是把 LF 转变成 CRLF
-f, --fail连接失败时不显示 http 错误
--ftp-create-dirs如果远程目录不存在,创建远程目录
--ftp-method [multicwd/nocwd/singlecwd]控制 CWD 的使用
--ftp-pasv使用 PASV/EPSV 代替端口
--ftp-skip-pasv-ip使用 PASV 的时候,忽略该IP地址
--ftp-ssl尝试用 SSL/TLS 来进行 ftp 数据传输
--ftp-ssl-reqd要求用 SSL/TLS 来进行 ftp 数据传输
-F, --form NAME=CONTENT模拟 http 表单提交数据
--form-string NAME=STRING模拟 http 表单提交数据
-g, --globoff禁用网址序列和范围使用 {} 和 []
-G, --get以get的方式来发送数据
-H, --header LINE自定义头信息传递给服务器
--ignore-content-length忽略的 HTTP 头信息的长度
-i, --include输出时包括 protocol 头信息
-I, --head只显示请求头信息
-j, --junk-session-cookies读取文件进忽略 session cookie
--interface INTERFACE使用指定网络接口/地址
--krb4 LEVEL使用指定安全级别的 krb4
-k, --insecure允许不使用证书到SSL站点
-K, --config指定的配置文件读取
-l, --list-only列出ftp目录下的文件名称
--limit-rate RATE设置传输速度
--local-port NUM[-NUM]强制使用本地端口号
-L, --location如果(HTTP/HTTPS)服务器报告请求的页面已移动到其他位置,此选项将使 curl 在新位置上重做请求。使用身份验证时,curl 只将其凭据发送到初始主机。如果重定向将 curl 转移到其他主机,它将无法截获用户+密码。另请参见选项 --location-trusted,了解如何更改此设置。您可以使用--max-redirs 选项限制要执行的重定向次数
--location-trusted(HTTP/HTTPS)类似于-L,--location,但允许向站点可能重定向到的所有主机发送名称+密码。这可能会导致安全漏洞因为如果使用 HTTP 协议明文传输用户名+密码
-m, --max-time SECONDS设置请求处理超时时间(含建立连接的耗时)
--max-redirs NUM设置最大重定向次数
--max-filesize BYTES设置最大下载的文件总量
-M, --manual显示全手动
-n, --netrc从 netrc 文件中读取用户名和密码
--netrc-optional使用 .netrc 或者 URL来覆盖 -n
--ntlm使用 HTTP NTLM 身份验证
-N, --no-buffer禁用缓冲输出
-o, --output FILE把输出写到指定文件中
-O, --remote-name把输出写到与远程文件同名的本地文件中
-p, --proxytunnel使用 HTTP 代理
--proxy-anyauth选择任一代理身份验证方法
--proxy-basic在代理上使用基本身份验证
--proxy-digest在代理上使用数字身份验证--proxy-ntlm在代理上使用 ntlm 身份验证
-P, --ftp-port ADDRESS使用端口地址,而不是使用PASV
-q, --disable作为第一个参数,关闭 .curlrc
-Q, --quote CMD文件传输前,发送命令到服务器
-r/--range RANGE检索来自HTTP/1.1或FTP服务器字节范围
--range-file读取(SSL)的随机文件
-R, --remote-time在本地生成文件时,保留远程文件时间
--retry NUM传输出现问题时,重试的次数
--retry-delay SECONDS传输出现问题时,设置重试间隔时间
--retry-max-time SECONDS传输出现问题时,设置最大重试时间
-s, --silent静默模式。不输出任何东西
-S, --show-error显示错误
--socks4 HOST[:PORT]用 socks4 代理给定主机和端口
--socks5 HOST[:PORT]用 socks5 代理给定主机和端口
--stderr FILE将对 stderr 的所有写入重定向到指定的文件
-t, --telnet-option OPT=VALTelnet 选项设置
--trace FILE对指定文件进行 debug
--trace-ascii FILE启用对所有传入和传出数据(包括描述性信息)的完整跟踪转储到给定文件。使用“-”作为文件名将输出发送到 stdout
--trace-time跟踪详细输出时,添加时间戳
-T, --upload-file FILE上传文件
--url URL指定要提取的 URL
-u, --user USER[:PASSWORD]设置服务器的用户和密码
-U, --proxy-user USER[:PASSWORD]设置代理用户名和密码
-v, --verbose打印更多信息,主要用于调试
-V, --version显示有关 curl 及其使用的 libcurl 版本的信息
-w, --write-out FORMAT什么输出完成后
-x, --proxy HOST[:PORT]在给定的端口上使用HTTP代理
-X, --request COMMAND指定与 HTTP 服务器通信时使用的自定义请求方法,默认为 GET
-y, --speed-time放弃限速所要的时间,默认为30
-Y, --speed-limit停止传输速度的限制,速度时间

4.常用示例

  • 发起 HTTP GET 请求。注意 GET 请求可以携带包体。
curl -X GET 'http://9.138.158.214:10000?advertiser_id=93&auth_code=AUTH_CODE' -H 'Content-Type:application/json' -d '{"action_time":1591100087,"ad_id":"101642"}'

如果 URL 携带参数,需要使用单引号或双引号将 URL 引起来,因为字符 & 是 Shell 特殊字符,或者使用反斜杠对其转义。

  • 获取网页数据。
curl https://www.baidu.com

执行后,百度官网的网页内容就会显示在屏幕上了。

  • 保存网页内容。
curl https://www.baidu.com > baidu_index.html
# 或
curl https://www.baidu.com -o baidu_index.html
  • 静默模式下载文件。注意 URL 在最后要具体到某个文件,不然无法下载。
curl -s -O  https://dl.softmgr.qq.com/original/im/QQ9.3.3.27011.exe
  • 下载文件时显示进度条。
curl -#  -O  https://dl.softmgr.qq.com/original/im/QQ9.3.3.27011.exe
######################################################################## 100.0%
  • 访问需要授权的页面时,可通过 -u 选项提供用户名和密码进行授权。
curl -u root  https://github.com/jindeng/sz14.git
Enter host password for user 'root':
  • 只打印响应头部信息。
curl (-I | --head) https://github.com/jindeng/sz14.git
  • 限制 curl 的下载速度。
curl URL --limit-rate 50k

使用 --limit-rate 限制 curl 的下载速度,命令中用 k(千字节)和 m(兆字节)指定下载速度限制。

  • 指定可下载的最大文件大小。
curl URL --max-filesize bytes

使用 --max-filesize 指定可下载的最大文件大小,如果文件大小超出限制,命令则返回一个非 0 退出码,如果命令正常则返回 0。

  • 用 curl 设置用户代理。
curl URL -A "Mozilla/5.0"

有些网站访问会提示只能使用 IE 浏览器来访问,这是因为这些网站设置了检查用户代理,可以使用curl把用户代理设置为IE,这样就可以访问了。使用 -A 或者 --user-agent 选项。

  • 自定义头信息传递给服务器。使用多个 -H 选项可传递多个头部信息。
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" URL
  • curl 设置 cookies。使用 --cookie 选项来指定 cookie,多个 cookie 使用分号分隔。
curl URL --cookie "user=root;pass=123456"

将 cookie 另存为一个文件,使用 --cookie-jar 选项。

curl URL --cookie-jar cookie_file
  • curl 设置参照页字符串。使用 --referer 选项指定参照页字符串。
curl --referer URL1 URL2

参照页是位于 HTTP 头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页 A 中的某个连接,那么用户就会跳转到B网页,网页 B 头部的参照页字符串就包含网页 A 的 URL。

  • 断点续传。curl 能够从特定的文件偏移处继续下载,它可以通过指定一个便移量来下载部分文件。
curl URL/File -C OFFSET

偏移量是以字节为单位的整数,如果让 curl 自动推断出正确的续传位置使用:

curl -C - URL
  • 连接失败时不显示 http 错误。
curl -f https://unknow.com
  • 通过 ftp 上传。
curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
  • 通过 ftp下载。
curl -u 用户名:密码 -O URL

参考文献

[1] curl(1) manual
[2] CSDN.【Linux】一步一步学Linux——curl命令(193)

Linux 命令(136)—— curl 命令相关推荐

  1. Linux命令之curl命令

    一.命令简介   curl命令在linux操作系统中经常来测试网络和url的联通性,模拟正常的网络访问.curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具 ...

  2. Linux中的wget命令与curl命令

    wget命令与curl命令都用来与服务器之间传输数据,有时候也用来测试网络连接. wget命令 概述 GNU Wget 是一个免费实用程序,用于从 Web 非交互式下载文件.它支持HTTP.HTTPS ...

  3. Linux基础 之 curl 命令

    前言 在命令的使用过程中, 我们也经常使用curl命令. 在此, 总结下curl命令的常见用法. 正文 curl 使用curl -h可以看到curl命令的所有选项. 我们经常使用的无非curl地址.c ...

  4. 【Linux命令】curl 命令

    参考 curl 的用法指南 curl 命令详解(转载) 常用参数详解 参数 描述 -I/–head 只显示传输文档,经常用于测试连接本身 -o/–output 把输出写到该文件中,必须输入保存文件名 ...

  5. Linux系统中curl命令用法详解

    在Linux系统中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款强大的http命令行工具.它支持文件的上传和下载,是综合传输工具. curl 是常用的命令行工具,用来请求 Web 服 ...

  6. linux中shell curl命令获取http状态码--------强大的网络传输工具

    文章来源:http://dbajun.iteye.com/blog/1813801 curl命令详解:http://blog.sina.com.cn/s/blog_94cf845f0102w8vt.h ...

  7. Linux网络之curl命令详解

    curl 是一个工具,用于传输来自服务器或者到服务器的数据.「向服务器传输数据或者获取来自服务器的数据」 可支持的协议有(DICT.FILE.FTP.FTPS.GOPHER.HTTP.HTTPS.IM ...

  8. Linux中使用curl命令发送带参数的get请求和post请求

    1. curl与wget 命令的区别 相似之处:wget 和 cURL 都可以下载内容,都可以向互联网发送请求并返回请求项,也可以进行 HTTP POST 请求,它们都是命令行工具,可以设计成可脚本化 ...

  9. 【树莓派不吃灰】命令篇① curl命令

    目录 1. 前言 2. curl命令常用参数 2.1 不带有任何参数时,curl 就是发出 GET 请求 2.2 -i参数打印出服务器回应的 HTTP 标头. 2.3 -I参数向服务器发出 HEAD ...

最新文章

  1. HDU 2519 新生晚会【求组合数】
  2. 关于字符串的分割问题
  3. (转载)聊聊Git原理
  4. 从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时
  5. Git学习文档之一 学习文档-发布
  6. Emacs是一种信仰!世界最强编辑器介绍 (转自王珢)
  7. Q99:当Bezier曲面(Utah Teapot)同时遇上“噪声纹理”和“Phong反射模型”
  8. react 界面渲染完成 立即执行_React原理解析fiber、diff
  9. Kotlin实战【五】Kotlin中的异常
  10. 模糊评价模型-以2018美赛为例
  11. velocity 语法简记
  12. apereo cas开发_CAS 之 Apereo CAS 简介(一)
  13. 微信小程序转发朋友圈
  14. nginx配置多个域名使用同一个端口
  15. 2022.04.14【读书笔记】|WGCNA分析原理和数据挖掘技巧
  16. php 检测分辨率,浏览器分辨率检测,屏幕分辨率检测
  17. 从技术角度谈如何开发一款微信联网小游戏
  18. iOS Wow体验 - 第四章 - 为应用的上下文环境而设计
  19. tizen操作系统将支持android,三星Tizen操作系统将支持Android应用
  20. python Shapely包使用,实现多边形iou

热门文章

  1. 奇安信代码安全实验室帮助微软修复两个 “重要” 漏洞,获官方致谢
  2. AGC018C Coins (set)
  3. ActiveMQ从入门到精通(二)
  4. C# 使用SFTP的上传下载文件时如何使用代理
  5. 集成mysql+tomcat+apache+Eclipse的绿色版开发环境
  6. 【JS教程】100+常用JS函数(方法)
  7. 2008年信息安全服务市场发展报告
  8. python利用gzip压缩解压缩StringIO
  9. vxworks源码剖析- 数据结构篇一(双向链表)-转
  10. [Java] 1001. 害死人不偿命的(3n+1)猜想 (15)-PAT乙级