简介
curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能,curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
常用选项
| 命令 | 说明 |
| -A | 指定客户端的用户代理标头,即User-Agent。 |
| -b | 用来向服务器发送 Cookie。 |
| -c | 将服务器设置的 Cookie 写入一个文件。 |
| -d | 用于发送 POST 请求的数据体。 |
| --data-urlencode | 等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。 |
| -e | 用来设置 HTTP 的标头Referer,表示请求的来源。 |
| -F | 用来向服务器上传二进制文件。 |
| -G | 用来构造 URL 的查询字符串。 |
| -H | 添加 HTTP 请求的标头。 |
| -i | 打印出服务器回应的 HTTP 标头。空一行并输入网页源代码 |
| -I (大写的i) | 向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。 |
| -k | 指定跳过 SSL 检测,不验证ssl证书是否正确 |
| -L | 会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。 |
| --limit-rate | 限制 HTTP 请求和回应的带宽,模拟慢网速的环境。 |
| -o | 将服务器的回应保存成文件,等同于wget命令。 |
| -s | 将不输出错误和进度信息。 |
| -S | 指定只输出错误信息,通常与-s一起使用。 |
| -u | 用来设置服务器认证的用户名和密码。 |
| -v | 输出通信的整个过程,用于调试。 |
| -x | 指定 HTTP 请求的代理。 |
例子
指定客户端的用户代理标头,即User-Agent。
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://www.ahaoyw.com
指定一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。
curl -b 'foo=bar' https://www.ahaoyw.com
命令读取本地文件cookies.txt,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器。
$ curl -b cookies.txt https://www.ahaoyw.com
将Referer标头设为AHAOYW。
$ curl -e 'AHAOYW' https://www.ahaoyw.com
收到服务器回应后,先输出服务器回应的标头,然后空一行,再输出网页的源码。
$ curl -i https://www.ahaoyw.com
收到服务器回应后,输出服务器回应的标头,小写的 “i” 是会空一行,再输出网页的源码,大写的I没有
$ curl -I https://www.ahaoyw.com
直接跳过验证证书不检查服务器的 SSL 证书是否正确
$ curl -k https://www.ahaoyw.com
用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。
$ curl --limit-rate 200k https://www.ahaoyw.com
参数将服务器的回应保存成文件,等同于wget命令。
$ curl -o haha.html https://www.ahaoyw.com
输出通信的整个过程,用于调试。这个功能比较少用
$ curl -v https://www.ahaoyw.com
指定 HTTP 请求通过代理链接地址:8080的 socks5 代理发出,如果没有指定代理协议,默认为 HTTP。
$ curl -x socks5://ahaoyw:代理链接地址:8080 https://www.ahaoyw.com

