curl 命令行用法摘记

先看一个示例:

命令:curl -Ls -w %{url_effective} http://baidu.com

输出:

<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
http://baidu.com/

解释:

  • curl — 命令关键字
  • -s — 静默模式,不会输出无关中间过程信息
  • -L — 自动重定向,即302自动跟踪
  • [URL] — 目标网址
  • -o [filepath] — 将结果输出到文件
  • -w ‘%{url_effective}’ — 输出目标网址

 

常用命令列举

1.抓取页面内容保存到指定文件中

curl -o test.txt  URL

2.只打印响应头部信息

curl -I URL

3.用户认证

curl -u user:pwd URL

4.GET请求

curl -XGET URL?param=test

5.POST请求

curl -XPOST  -d '{"param"1:"test1","param2":"test2"}' URL

6.通用头部信息传递

curl -H  "param1:test1" -H "param2:test2" URL

7.上传文件

curl --form "fileupload=@filename.txt" http://hostname/resource

8.对Curl使用网络限速

curl --limit-rate 1000B -O URL

Options

  • Curl 所支持的选项(精简,options)

    (H) 表示仅适用 HTTP/HTTPS ,(F) 表示仅适用于 FTP

    --anyauth       选择 "any" 认证方法 (H)
-a, --append 添加要上传的文件 (F/SFTP)
--basic 使用HTTP基础认证(Basic Authentication)(H)
--cacert FILE CA 证书,用于每次请求认证 (SSL)
--capath DIR CA 证书目录 (SSL)
--compressed 请求压缩 (使用 deflate 或 gzip)
-K, --config FILE 指定配置文件
--connect-timeout SECONDS 连接超时设置
-C, --continue-at OFFSET 断点续转
-d, --data DATA HTTP POST 数据 (H)
--data-ascii DATA ASCII 编码 HTTP POST 数据 (H)
--data-binary DATA binary 编码 HTTP POST 数据 (H)
--data-urlencode DATA url 编码 HTTP POST 数据 (H)
--digest 使用数字身份验证 (H)
-D, --dump-header FILE 将头信息写入指定的文件
--egd-file FILE 为随机数据设置EGD socket路径(SSL)
-F, --form CONTENT 模拟 HTTP 表单数据提交(multipart POST) (H)
--form-string STRING 模拟 HTTP 表单数据提交 (H)
-G, --get 使用 HTTP GET 方法发送 -d 数据 (H)
-H, --header LINE 要发送到服务端的自定义请求头 (H)
-I, --head 仅显示响应文档头
-h, --help 显示帮助
-0, --http1.0 使用 HTTP 1.0 (H)
-i, --include 在输出中包含协议头 (H/F)
-k, --insecure 允许连接到 SSL 站点,而不使用证书 (H)
--interface INTERFACE 指定网络接口/地址
-4, --ipv4 将域名解析为 IPv4 地址
-6, --ipv6 将域名解析为 IPv6 地址
--keepalive-time SECONDS keepalive 包间隔
--limit-rate RATE 限制传输速度
-l, --list-only 只列出FTP目录的名称 (F)
--local-port RANGE 强制使用的本地端口号
-L, --location 跟踪重定向 (H)
-m, --max-time SECONDS 允许的最多传输时间
-o, --output FILE 将输出写入文件,而非 stdout
--pass PASS 传递给私钥的短语 (SSL/SSH)
--post301 在 301 重定向后不要切换为 GET 请求 (H)
--post302 在 302 重定向后不要切换为 GET 请求 (H)
--post303 在 303 重定向后不要切换为 GET 请求 (H)
-#, --progress-bar 以进度条显示传输进度
--proto PROTOCOLS 启用/禁用 指定的协议
--proto-redir PROTOCOLS 在重定向上 启用/禁用 指定的协议
-Q, --quote CMD 在传输开始前向服务器发送命令 (F/SFTP)
--random-file FILE 读取随机数据的文件 (SSL)
-r, --range RANGE 仅检索范围内的字节
--raw 使用原始HTTP传输,而不使用编码 (H)
-e, --referer Referer URL (H)
-J, --remote-header-name 从远程文件读取头信息 (H)
-O, --remote-name 将输出写入远程文件
--remote-name-all 使用所有URL的远程文件名
-R, --remote-time 将远程文件的时间设置在本地输出上
-X, --request COMMAND 使用指定的请求命令
--resolve HOST:PORT:ADDRESS 将 HOST:PORT 强制解析到 ADDRESS
--retry NUM 出现问题时的重试次数
--retry-delay SECONDS 重试时的延时时长
--retry-max-time SECONDS 仅在指定时间段内重试
-S, --show-error 显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-s, --silent Silent模式。不输出任务内容
-Y, --speed-limit RATE 在指定限速时间之后停止传输
-y, --speed-time SECONDS 指定时间之后触发限速. 默认 30
--ssl 尝试 SSL/TLS (FTP, IMAP, POP3, SMTP)
--ssl-reqd 需要 SSL/TLS (FTP, IMAP, POP3, SMTP)
-2, --sslv2 使用 SSLv2 (SSL)
-3, --sslv3 使用 SSLv3 (SSL)
--ssl-allow-beast 允许的安全漏洞,提高互操作性(SSL)
--stderr FILE 重定向 stderr 的文件位置. - means stdout
--tcp-nodelay 使用 TCP_NODELAY 选项
-t, --telnet-option OPT=VAL 设置 telnet 选项
--tftp-blksize VALUE 设备 TFTP BLKSIZE 选项 (必须 >512)
-T, --upload-file FILE 将文件传输(上传)到指定位置
--url URL 指定所使用的 URL
-B, --use-ascii 使用 ASCII/text 传输
-u, --user USER[:PASSWORD] 指定服务器认证用户名、密码
--tlsuser USER TLS 用户名
--tlspassword STRING TLS 密码
--tlsauthtype STRING TLS 认证类型 (默认 SRP)
--unix-socket FILE 通过这个 UNIX socket 域连接
-V, --version 显示版本号并退出
-w, --write-out FORMAT 完成后输出什么

posted on 2021-08-04 10:43  空明流光  阅读(869)  评论(0编辑  收藏  举报

导航