Curl 的使用主要分为两大类。
一个是网站服务的分析,工程师会希望了解查看网站的返回状态如何;希望了解整个 HTTP 通信过程;想知道特定场景如 IPV6 的服务站点环境下进行模拟检测,等等。
第二个类型就是功能用途的使用。这里我们会了解 Curl 如何上传文件、下载文件;如何做断点续传,如何发起多种 HTTP 的请求;如何使用到 Curl 的代理模式来进行访问。
1、curl -A ‘User-Agent’ url
-A或者-H参数指定客户端的用户代理标头,即User-Agent
指定User-Agent
curl -A 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36' http://www.google.com
移出User-Agent
curl -A '' https://google.com
2、-d参数用于发送 POST 请求的数据体
$ curl -d'login=googlo&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=google' -d 'password=123' -X POST https://google.com/login
3、 -v或者–trace能看到整个请求过程
包含:请求的头信息是什么,然后服务端返回的头信息是什么,服务端返回的如果有 body 的信息的话,同样会打印出 body 信息。
curl -v www.baidu.com
* About to connect() to www.baidu.com port 80 (#0)
* Trying 14.215.177.38...
* Connected to www.baidu.com (14.215.177.38) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
–trace
[root@master etc]# curl --trace -https://www.baidu.com
curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
[root@master etc]# curl --trace - https://www.baidu.com
== Info: About to connect() to www.baidu.com port 443 (#0)
== Info: Trying 14.215.177.39...
== Info: Connected to www.baidu.com (14.215.177.39) port 443 (#0)
== Info: Initializing NSS with certpath: sql:/etc/pki/nssdb
== Info: CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
== Info: SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
== Info: Server certificate:
== Info: subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
== Info: start date: Jul 05 05:16:02 2022 GMT
== Info: expire date: Aug 06 05:16:01 2023 GMT
== Info: common name: baidu.com
–trace参数也可以用于调试,还会输出原始的二进制数据
4、-e设置Referer
curl -e 'https://google.com?q=example' https://www.example.com
5、-k跳过 SSL 检测。
curl -k https://www.example.com
上面命令不会检查服务器的 SSL 证书是否正确
6、-L跟随服务器的重定向
curl -L https://api.twitter.com/tweet
7、限制请求和回应的带宽
curl --limit-rate 200k https://google.com
上面命令将带宽限制在每秒 200K 字节
8、指定请求的代理
curl -x 200.200.200.200 www.baidu.com
通过 200.200.200.200 这台机器去请求服务端站点
9、指定请求的方法
curl -X POST https://www.example.com
10、检测 IPv6 的服务站点
curl -6 -vo /dev/null --resolve "static.meituan.net:80:[240e:ff:e02c:1:21::]" "http://static.meituan.net/bs/@mtfe/knb-core/latest/dist/index.js"
curl -6 表示发起的是一个 IPv6 的请求。 -v 表示现实通信过程。-o 表示把请求返回的 body 数据放到本地空设备,也就是 body 数据不展示,只显头部信息,相当于 -I 的作用。–resolve 表示做的是域名和 IP 的解析,我把 static.meituan.net 这个域名的请求地址手动指定解析到 IPv6 地址,然后后面是请求的 URL 了。