curl
支持多种协议命令行工具,发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)。
常用命令
-
查看网页源码
curl <URL>
-
保存网页
curl --output <file-name> <URL>
或者curl -o <file-name> <URL>
-
自动跳转
curl --location <URL>
或者curl -L <URL>
-
HTTP认证
curl --user name:password <URL>
或者curl -u name:password <URL>
-
显示头信息(与网页源码 一起)
curl --include <URL>
或者curl -i <URL>
-
只显示头信息
curl --head <URL>
或者curl -I <URL>
-
显示通信过程(包括端口连接和http request头信息)
curl --verbose <URL>
或者curl -v <URL>
-
将详细通信过程保存到文件
curl --trace/--trace-ascii <file-name> <URL>
-
跳过SSL检测(不会检查服务器的 SSL 证书是否正确)
curl --insecure <URL>
或者curl -k <URL>
一些用法
发送表单信息
- GET方法(数据附在网址后面)
curl <URL>/form.cgi?data=xxx
- POST方法(使用--data参数,数据和网址分开)
curl -X POST --data "data=xxx" <URL>/form.cgi
- 通过
--data-urlencode
参数完成表单编码curl -X POST--data-urlencode "date=hello curl" <URL>/form.cgi
HTTP动词
- curl默认的HTTP动词是GET,使用
-X
参数可以支持其他动词。 curl -X POST <URL>
curl -X DELETE <URL>
User-Agent
- 用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页。
curl --user-agent "<User-Agent>" <URL>
cookie
- 使用
--cookie
参数让curl发送cookie - cookie的具体值可以从http response头信息的
Set-Cookie
字段中得到 curl --cookie "name=xxx" <URL>
- 保存服务器返回的cookie到文件
curl -c cookies <URL>
- 使用文件内容作为cookie信息,进行后续的请求
curl -b cookies <URL>
头信息
- 使用
--header
参数可以在http request之中,自行增加一个头信息 curl --header "Content-Type:application/json" <URL>
参考信息
- Curl Cookbook: https://catonmat.net/cookbooks/curl
- curl 初学者教程: http://www.ruanyifeng.com/blog/2011/09/curl.html
- curl 用法指南: https://www.ruanyifeng.com/blog/2019/09/curl-reference.html