目录
7.curl -IK 只显示http reposonse的头信息
9.curl –connect-timeout 10 -m 20 “超过时间
curl(Client for URLs)是一个常用的命令行工具,用于与服务器进行数据的传输。它支持多种协议,如HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTSP以及RTMP等。curl 允许用户发送 HTTP 请求,并接收来自服务器或其他协议的服务器的响应。
以下是 curl 的一些主要作用:
数据传输:发送 GET、POST、PUT、DELETE 等 HTTP 请求。
上传和下载文件,支持断点续传。
调试:开发者可以使用 curl 来测试 RESTful API 的响应,或者检查 HTTP 请求的头部和正文。
通过详细的输出选项,可以显示请求的完整头部和响应的详细信息。
自动化:脚本中可以使用 curl 来自动化地与 Web 服务进行交互。
自动化测试、部署、数据抓取等场景经常用到 curl。
模拟浏览器行为:可以通过设置 User-Agent、Cookie、Referer 等头部信息来模拟浏览器的行为。
支持 Cookie 文件的读写,方便处理需要登录的页面。
其他协议支持:除了 HTTP/HTTPS 外,还支持 FTP、SFTP 等协议,方便文件传输。
代理和重定向:支持通过 HTTP、SOCKS4、SOCKS5 代理进行数据传输。
支持 URL 重定向。
输出格式:可以将输出保存为文件,或者将输出格式化为 JSON、XML 等。
安全性:支持 SSL/TLS,确保数据在传输过程中的安全性。
使用 curl 时,可以通过命令行参数来指定各种选项,如 URL、请求方法、请求头部、请求体等。这使得 curl 成为一个非常强大且灵活的工具。
1.curl -o 将远程文件下载到本地-o并指定目录
2.curl -X指定请求方式
3.curl -v可以查看http或者https的请求过程
4.curl -u携带用户或密码
5.curl -H“请求头“ baidu.com
6.curl -I 只显示http reponse的头信息
7.curl -IK 只显示http reposonse的头信息
#-I:纸打印响应头的信息,不下载响应体
访问https-k
# -k:允许请求使用自签名的整数或无效证书,通常在测试的时候用
8.curl -L自动跳转
有的网站是自动跳转的,使用-L参数,curl就会跳转到新的网址
9.curl –connect-timeout 10 -m 20 “超过时间
连接时间用—connect-timeout 参数来指定
数据传输的最大允许时间用-m参数在指定
连接超时的话,出错提示形如:
curl(28)connect()timed out
数据传输的最大允许时间超时的话,出错提示形如:
curl(28) Operation timed out after 2000 milliseconds with 0 bytes received
10.curl测网站打开速度
写个脚本如下:
curl() {
# type -P curl 命令来查找系统中名为 curl 的可执行文件的路径
# -L:如果服务器返回的响应是重定向,则跟随重定向
# -q:不输出进度条或其他不必要的信息,以保持输出简洁
# --retry 5:如果请求失败,则重试 5 次
# --retry-delay 10:每次重试之间的延迟时间为 10 秒
# --retry-max-time 60:重试的最长时间为 60 秒
$(type -P curl) -L -q --retry 5 --retry-delay 10 --retry-max-time 60 "$@"
}
测试:
curl -o /dev/null -s -w \
> time_namelookup:"\t"%{time_namelookup}"\n"time_connect:"\t\t"%{time_connect}"\n"time_appconnect:"\t"%{time_appconnect}"\n"time_redirect:"\t\t"%{time_redirect}"\n"time_pretransfer:"\t"%{time_pretransfer}"\n"time_starttransfer:"\t"%{time_starttransfer}"\n"time_total:"\t\t"%{time_total}"\n" \
time_namelookup: DNS 域名解析的时候,就是把 https://zhihu.com 转换成 ip 地址的过程
time_connect: TCP 连接建立的时间,就是三次握手的时间
time_appconnect: SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
time_redirect: 从开始到最后一个请求事务的时间
time_pretransfer: 从请求开始到响应开始传输的时间
time_starttransfer: 从请求开始到第一个字节将要传输的时间
time_total: 这次请求花费的全部时间