cURL是一个利用URL语法在命令行下工作的文件传输工具,支持文件上传和下载,是综合传输工具。
其源代码可在 Github 上阅读和获取(包括libcurl),这里只简单地介绍下常见的使用方法。
一、获取文件
语法:curl -option URL
不加任何选项时,默认将结果打印到标准输出(STDOUT)

-o filename 选项:将获取到的内容以指定文件名(filename)保存至本地
-O 选项:使用URL中的文件名将其保存至本地

--progress 选项表示仅用『#』和百分比表示下载进度,若下载中断,可以添加-C - 选项断点续传

--limit-rate 选项对下载文件时的速度进行限制

二、获取响应头信息
-i 选项:输出时响应头和文档内容都显示
-I 选项:只显示响应头信息不显示文档内容

可以看出,默认情况下 cURL 不会发送 HTTP Location headers(重定向),即遇到需要跳转的网页不自动跳转。curl www.jianshu.com
会得到 『301 Moved Permanently』,而不会跳转至 https://www.jianshu.com。
可以通过添加 -L 选项进行重定向。(图中的 -s 选项表示静默模式)

三、自定义User-Agent
User-Agent 是浏览器的身份标识,远程服务器通过它可以获取客户端使用的操作系统、浏览器版本等信息。(写过爬虫的都知道……)
-A 选项可以自定义 User-Agent 信息,默认是 curl/版本号

访问上图中的网站时会返回浏览者的 User-Agent 信息

--header 选项可以自定义其他请求头信息
如
curl --header "Content-Type:application/json" URL
关于HTTP消息头(包括请求头和响应头)的简介,可参考这篇文章https://itbilu.com/other/relate/EJ3fKUwUx.html
三、cookie信息
Cookie 是访问的远程站点存储在客户端计算机上的一段信息,通常储存着用户对某个站点的设置,比如偏好的语言或地理位置,也包括个人身份识别信息。
--cookie 选项可以附加上 cookie 信息
-c cookie-file 可以保存服务器返回的 cookie 到文件
-b cookie-file 可以使用该文件作为 cookie 信息

四、HTTP动词
默认无选项的 curl 命令即使用了 GET(获取) 动词,另外还有 POST(新建),PUT(更新),DELETE(删除)等方法。通过这些动词可以很方便的访问 Restful 架构的 API。
命令格式为:curl -d data -X method URL

-d 选项指定要传输的数据,-X 选项指定使用的方法。
只附加 -d 选项则默认使用 POST 方法,可以通过此命令完成简单的表单验证操作

网友评论