curl命令常用参数详细使用笔记
curl 命令参数详解。
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
这里我先对每个参数逐一测试使用,最后再统一汇总。
-V/–version 显示版本信息
curl不加参数直接请求,这里以我的博客为例,之前用的是http,现在部署了https。
很明显网站返回的一个301的跳转,但curl并不会跟随跳转,而是直接返回内容。
-v, –verbose 输出详细信息
-I/–head 只显示响应header,经常用于测试连接本身
此时显示了响应的header头部字段。指向我博客的https链接。
-L/–location 跟踪重定向
-s/–silent 静默模式,不输出任何东西
a.zgao.top是一个不存在的子域名。
-S/–show-error 显示错误,在选项 -s 中,当 curl 出现错误时将显示
-o/–output 把输出写到该文件中,必须输入保存文件名
-O/–remote-name 把输出写到该文件中,保留远程文件的文件名
以为我博客上提供下载的一个文件为例
-w/–write-out [format] 传输完成后再输出什么
-#/–progress-bar 用进度条显示当前的传送状态
我觉得在我们下载大文件时,进度条挺直观的,尤其是在开发中调用curl命令下载。相比用代码实现下载进度条要方便很多。
-f, –fail 不显示 连接失败时HTTP错误信息,只显示抓取错误
https://zgao.top/download/test 是一个不存在的页面,会返回404
–retry 传输出现问题时,重试的次数
-R/–remote-time 在本地生成文件时,保留远程文件时间
-u, –user <user:password> 使用帐户,密码 例如 admin:password
-l, –list-only 只列出FTP目录的名称 (F)
-i, –include 显示内容的同时显示response的header (H/F)
-X, –request [GET|POST|PUT|DELETE|…] 使用指定的 http method 例如 -X POST
-T, –upload-file <file> 上传文件
-b, –cookie <data> cookie 文件 或者 字符串 (H)
-A, –user-agent user-agent设置 (H)
-d, –data <data> 设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
-G, –get 使用 HTTP GET 方法发送 -d 数据 (H)
如果不加-G参数使用-d,就是一个post请求。
-e, –referer 设定 referer (H) 有的网站会判断,请求来源地址,比如防盗链
-H, –header <header> 设定 request里的header
其实-e也可以用-H来修改,-H “Referer:Zgao”这样也行,因为Referer本身也是一个header。
-x, –proxy [PROTOCOL://]HOST[:PORT] 在指定的端口上使用代理
-F, –form <name=string> 模拟 HTTP 表单数据提交 multipart POST (H)
-D, –dump-header <file> 将头信息写入指定的文件
-c, –cookie-jar <file> 操作结束后,要写入 Cookies 的文件位置
-r/–range 检索来自HTTP/1.1或FTP服务器字节范围
高级用法
循环下载
curl -O https://zgao.top/download/screen[1-10].jpg
循环(匹配)下载
curl -O https://zgao.top/download/[001-201].jpg
在使用curl时,会希望获取更多的信息,比如请求耗时,访问时延,请求大小等相关参数,虽然配合其他命令也可以实现该效果,比如time 命令配合curl命令公共使用,不过还是不够方便,可以使用curl 命令的格式化输出的功能,配置显示格式。
time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n ----------\n time_total: %{time_total}\n http_code: %{http_code}\n ----------\n local_ip: %{local_ip}\n size_download: %{size_download}\n size_header: %{size_header}\n size_request: %{size_request}\n size_upload: %{size_upload}\n speed_download: %{speed_download}\n speed_upload: %{speed_upload}\n
大家自己测试时可以用这段格式化配置,参考了CSDN上的文章。
对于curl命令的常用参数,我就整理到这里了,对于还有一些不常用的参数可以使用 curl –help 查看,不过是英文的,看起来不方便。
赞赏微信赞赏支付宝赞赏
发表评论