linux - curl下载文件和发送请求
curl 是一个无交互的命令行工具,可以用它进行下载或上传资源,或发送请求。它支持多种协议包括
HTTP, HTTPS, FTP, SFTP, SCP等。
1. 下载网页
curl https://www.bbc.com
2. 将下载的网页内容保存到文件
curl -o bbc.html https://www.bbc.com
# 指定保存文件名
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
# 使用原有的文件名
curl https://www.bbc.com > bbc.html
curl -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso \ -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso
# 下载多个文件
3. 使用-C - 选项进行断点续传
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
4. -# , --progress-bar 在下载过程中显示进度条
curl http:/knopper.net -o index.html --progress-bar
4. -s 参数将不输出错误和进度信息
curl -s https://www.example.com
5. 使用-L选项跟随重定位
curl -L google.com
6. 使用-A 选项模拟用户代理
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
7. 使用--limit-rate 限制下载速率
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
8. 使用FTP协议下载文件
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
9. 使用-T 上传文件到FTP server
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
01. -c 参数将服务器的cookie 写入文件
curl -c cookies.txt https://www.google.com
11. 使用-b选项发送cookie到sever
curl -b "oraclelicense=a" https://www.google.com
# 构建cookie字符串
curl -b cookies.txt https://www.google.com
# 从文件读取cookie
12. 使用-x 选项利用代理服务器进行下载资源
`curl -U username:password -x 192.168.44.1:8888 http://linux.com/
13. 使用-X 设置发送请求的方法,-d 设置发送的数据
curl -d 'login=emma&password=123' -X POST https://google.com/login
curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
curl -d '@data.txt' https://google.com/login
# 读取本地文件data.txt,作为数据发送POST请求
14. --data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码
curl --data-urlencode 'comment=hello world' https://google.com/login
15. -e 和 -H 参数用来设置 HTTP 的标头Referer,表示请求的来源
curl -e 'https://google.com?q=example' https://www.example.com
curl -H 'Referer: https://google.com?q=example' https://www.example.com
16. -F参数用来向服务器上传二进制文件
$ curl -F 'file=@photo.png' https://google.com/profile
curl -F 'file=@photo.png;type=image/png' https://google.com/profile
curl -F 'file=@photo.png;filename=me.png' https://google.com/profile
17. -G参数用来构造 URL 的查询字符串, 发送一个get请求
curl -G -d 'q=kitties' -d 'count=20' https://google.com/search
curl -G --data-urlencode 'comment=hello world' https://www.example.com
18. -H参数添加 HTTP 请求的标头
curl -H 'Accept-Language: en-US' https://google.com
curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com
curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
19. -i参数打印出服务器回应的 HTTP 标头, 然后再打印出网页内容
curl -i https://www.example.com
20. 使用-I 选项获取HTTP头部信息
curl -I https://www.ubuntu.com/
21. -v 参数输出通信的整个过程,用于调试
curl -v https://www.example.com
22. --trace参数也可以用于调试,还会输出原始的二进制数据
curl --trace - https://www.example.com