cURL命令使用指南
cURL是什么
curl是Linux命令行工具,可以使用任何可支持的协议(如HTTP、FTP、IMAP、POP3、SCP、SFTP、SMTP、TFTP、TELNET、LDAP或FILE)在服务器之间传输数据。
在Linux下,curl是由libcurl 提供驱动封装的cli客户端,在libcurl驱动下,curl可以一次传输多个文件。而PHP中的cURL函数,也是基于libcurl驱动的。
curl由libcurl支持所有与传输相关的特性
cURL常用参数
| 参数 | 说明 |
|---|---|
| -i | 默认隐藏响应头,此选项打印响应头与 |
| -I/--head | 仅显示响应头 |
| -o | 将相应内容保存指定路径下 |
| -O | 将相应内容保存在当前工作目录下 |
| -C | 断点续传,在 crtl + c终端后,可以从中断后部分开始 |
| -v | 显示请求头与响应头 |
| -x | 使用代理 |
| -X | 指定请求方法,POST GET PUT DELETE等 |
| -d | 如GET/POST/PUT/DELETE 需要传的表单参数,如JSON格式 |
| -u username:password | 当使用ftp有用户名可以使用-u,ftp允许匿名用户访问可以忽略 |
| –-limit-rate 2000B | 限速 |
| -T/--upload-file <file> | 上传一个文件 |
| -c/--cookie-jar <file name> | 将cookie下载到文件内 |
| -k/--insecure | 允许执行不安全的ssl连接,即调过SSL检测 |
--header 'Host: targetapplication.com' |
使用请求头 |
| -L/--location | 接受服务端redirect的请求 |
| -F | 上传二进制文件 |
下面整理了一些常用语法使用格式
cURL使用案例
限制下载速率
curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
使用代理访问
curl --proxy yourproxy:port https://yoururl.com
限速访问
curl www.baidu.com --limit-rate 1k
存储cookie和使用cookie
[root@VM-0-2-centos ~]# curl --cookie-jar cnncookies.txt https://www.baidu.com/index.html -O -s -v
* About to connect() to www.baidu.com port 443 (#0)
* Trying 14.215.177.39...
* Connected to www.baidu.com (14.215.177.39) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: Apr 02 07:04:58 2020 GMT
* expire date: Jul 26 05:31:02 2021 GMT
* common name: baidu.com
* issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET /index.html 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
< Content-Length: 2443
< Content-Type: text/html
< Date: Wed, 26 May 2021 12:14:41 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
* Added cookie BDORZ="27315" for domain baidu.com, path /, expire 1622117681
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [data not shown]
* Connection #0 to host www.baidu.com left intact
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.baidu.com TRUE / FALSE 1622117681 BDORZ 27315
[root@VM-0-2-centos ~]# curl --cookie cnncookies.txt https://www.baidu.com -s -v -o /dev/null
* About to connect() to www.baidu.com port 443 (#0)
* Trying 14.215.177.39...
* Connected to www.baidu.com (14.215.177.39) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: Apr 02 07:04:58 2020 GMT
* expire date: Jul 26 05:31:02 2021 GMT
* common name: baidu.com
* issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
> Cookie: BDORZ=27315
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Wed, 26 May 2021 12:23:27 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
* Replaced cookie BDORZ="27315" for domain baidu.com, path /, expire 1622118207
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/ # 这里可以看到设置的cookie
<
{ [data not shown]
* Connection #0 to host www.baidu.com left intact
使用代理
curl -x socks5://127.0.0.1:10808 https://www.google.com
使用application/x-www-form-urlencoded表单类型
这里使用的为application/x-www-form-urlencoded
curl -d "option=value&something=anothervalue" -X POST https://{hostname}/
使用json格式作为body
curl -H "Content-Type: application/json" -X POST https://host.com/ \
-d '
{
"option": "value",
"something": "anothervalue"
}'
使用curl 上传文件
curl {host}/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" \
-H "token: 222" \
-v
也可以指定MIME类型。如:
curl -F 'file=@photo.png;type=image/png' https://{host}/api/v1/upimg
curl输出的格式变量
curl -w参数提供了一些格式变量,可以达到紧紧获取某些数据
仅获取http状态码
curl -w %{http_code} www.baidu.com -o /dev/null -s
获取整个请求的时间
获取整个请求的耗时,单位秒,显示单位 毫秒
curl -w %{time_total} www.baidu.com -o /dev/null -s
获取域名解析时间
curl -w %{time_namelookup} www.baidu.com -o /dev/null -s
获取TCP连接耗时
curl -w %{time_connect} www.baidu.com -o /dev/null -s
获取SSL/SSH握手到远程主机耗时
curl -w %{time_appconnect} https://www.baidu.com -o /dev/null -s -v
获取所有重定向的耗时
这里是从查找、连接、传输整个事务的完成到开始传送数据之前的耗时
curl -w %{time_redirect} www.baidu.com -o /dev/null -s
获得下载的总字节数
这里是http相应的body长度,而不是加上头部的大小
curl -w %{size_download} www.baidu.com -o /dev/null -s
[root@VM-0-2-centos ~]# curl -w %{size_download} www.baidu.com -o /dev/null -s
2381
[root@VM-0-2-centos ~]# cwww.baidu.com -s|wc l -s
2 159 2381
获得请求体送字节数
curl -w %{size_request} www.baidu.com -o /dev/null -s
获得传输中的连接数
curl -w %{num_connects} www.baidu.com -o /dev/null -s
获得重定向次数
curl -w %{num_redirects} www.360buy.com -o /dev/null -s -L
获得SSL验证结果
0 表示是成功的
curl -w %{ssl_verify_result} https://www.baidu.com -o /dev/null -s -L
获得重定向的地址
当没有指定-L时,会返回被重定向后的地址
curl -w %{redirect_url} https://www.360buy.com -o /dev/null -s
获得上传和下载速度
curl -w %{speed_download} https://www.360buy.com -o /dev/null -s
curl -w %{speed_upload} https://www.360buy.com -o /dev/null -s
根据自己需要拼接特定格式
curl -w "总共请求时长:%{time_total}\n总跳转次数:%{num_redirects}\n" \
www.360buy.com \
-o /dev/null -s \
-L
总共请求时长:1.338
总跳转次数:3
cURL命令使用指南的更多相关文章
- curl 命令行应用
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- curl网站开发指南
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- [转帖]curl 的用法指南
curl 的用法指南 作者: 阮一峰 日期: 2019年9月 5日 感谢 腾讯课堂NEXT学院 赞助本站,腾讯官方的前端课程 免费试学. http://www.ruanyifeng.com/blo ...
- [转帖]curl网站开发指南
curl网站开发指南 http://www.ruanyifeng.com/blog/2011/09/curl.html linux 里面有非常多很好的工具 比如这个 curl 之前 以为 wget 就 ...
- curl命令,curl实现post,curl监控网页shell脚本,curl多进程实现并控制进程数,
cURL > Docs > Tutorial: http://curl.haxx.se/docs/httpscripting.html 下载单个文件,默认将输出打印到标准输出中(STDO ...
- curl命令使用
curl命令可以用来构造http请求.参数有很多,常用的参数如下: 通用语法:curl [option] [URL...]在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.j ...
- curl命令行使用
curl 命令使用 原文地址:http://blog.sina.com.cn/s/blog_4b9eab320100slyw.html 可以看作命令行浏览器 1.开启gzip请求curl -I h ...
- CURL命令报错:dyld: lazy symbol binding failed: Symbol not found: _SSL_load_error_strings解决办法
Mac OS X 10.11.6, curl 命令报错,错误如下: dyld: lazy symbol binding failed: Symbol not found: _SSL_load_erro ...
- CURL命令详解
curl命令是一个强大的网络工具,它能通过http,ftp等方式下载.上传文件.其中curl远不止这些功能,大家可以通过阅读手册获取更多的信息,类似的工具还有wget. curl命令使用了libcur ...
随机推荐
- [c++] 文件包含
当一个类用到另一个类时,有两种包含方式,在.h中包含和在.cpp中包含 用到公共类库时,在.h文件中包含(公共类库可视为不变的) 用到项目开发过程中自己或同事写的类时,在.cpp文件中包含(可能根据需 ...
- [转载]层叠与并排win10
三. 层叠与并排 如果要排列的窗口超过4个,分屏就显得有些不够用了,这时不妨试一试最传统的窗口排列法.具体方法是,右击任务栏空白处,然后选择"层叠窗口"."并排显示窗口& ...
- linux环境下/etc/hosts文件详解
linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...
- Zabbix 常用术语
Zabbix 常用术语 1.主机(host) 一台你想监控的网络设备,用IP或域名表示 2.主机组(host group) 主机的逻辑组;它包含主机和模板.-个主机组里的主机和模板之间并没有任何直接的 ...
- Windows 10 创建虚拟网卡
想把虚拟机桥接到我的电脑,但我连的是无线网电脑没查网线,所以就创建个虚拟网卡吧. 1.win + x 打开设备管理器 2.网络适配器 + 操作 + 添加过时硬件 3.下一步 4.选-->安 ...
- 运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)
一.系统指标巡检脚本 #!/bin/bash menu(){ cat <<EOF +---------------------------------------------+ | 日常巡 ...
- sizeof()用法汇总-(转自风雷)
sizeof()功能:计算数据空间的字节数 1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素. ...
- 加载动画效果 HTML+ CSS
加载动画效果 写在前面 在无限的时间的河流里,人生仅仅是微小又微小的波浪.--郭小川 实现效果 实现原理 通过2个伪元素来设置3条颜色边框 通过定位将3个圆弧边框层叠再一起,再通过旋转实现一个圆的效果 ...
- Django(37)配置django日志
前言 django框架的日志通过python内置的logging模块实现的,既可以记录自定义的一些信息描述,也可以记录系统运行中的一些对象数据,还可以记录包括堆栈跟踪.错误代码之类的详细信息. ...
- 安装篇--xshell评估过期解决方法
打开XSHELL6(以自身版本为准,没有版本限制),弹出如上提示框,解决如下: 1.点击取消,不用卸载原来的,直接进入官网下载安装免费授权的https://www.netsarang.com/ 2.点 ...