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

posted @ 2023-11-25 22:25  箫笛  阅读(995)  评论(0编辑  收藏  举报