平时测试和查询访问都需要用到curl命令进行,这里做下简单的记录
1.curl
1.打印输出,保存
若直接curl访问,默认将输出打印到标准输出中(默认输出在终端屏幕上)
通过-o将文件保存到指定文件名的目录下
通过-O将文件保存到当前目录,使用URL中的文件名
通过’>’输出重定向到指定目录和文件名
1 2 3
| $ curl -o /tmp/index.html 'http://www.baidu.com/index.html' $ curl -O 'http://www.baidu.com/index.html' $ curl 'http:///www.baidu.com/index.html' >/tmp/index.html
|
2.断点续传
通过-C可以实现断点续传,下载过的文件不会在重新下载
1 2 3 4 5 6 7
| $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html $ curl -C -O http://www.gnu.org/software/gettext/manual/gettext.html
|
3.重定向
通过-L实现强制重定向
1
| $ curl -L 'http://www.google.com'
|
4.网络限速
1 2
| curl --limit-rate 1000K -O http://www.gnu.org/software/gettext/manual/gettext.html
|
5.登录需要授权的网页
通过-u指定用户名,进行授权登录
1 2 3 4
| $ curl -u username:password URL $ curl -u username URL
|
6.设置代理
通过-x指定代理服务器和端口
1
| $ curl -x 192.168.1.1:80 'http://www.google.com'
|
7.伪造user-agent
通过-A来模仿浏览器或客户端
8.伪造referer
通过-e能伪造referer,绕开服务器的访问检查
1
| $ curl -e "www.linux.com" "http://www.linux.com"
|
9.使用和保存cookie
1 2 3 4 5
| $ curl -c cookie.txt 'http://www.linux.com' $ curl -b cookie.txt 'http://www.linux.com'
|
10.分片下载,range请求
1
| $ curl -r 100-500 'www.linux.com/picture.jpg'
|
11.只显示http头
通过-I可以只显示http头部信息
通过-i可以显示所有信息
1 2 3 4 5 6 7 8 9 10 11 12
| $ curl -I 'http://www.baidu.com' HTTP/1.1 200 OK Server: bfe/1.0.8.18 Date: Thu, 03 May 2018 09:43:59 GMT Content-Type: text/html Content-Length: 277 Last-Modified: Mon, 13 Jun 2016 02:50:36 GMT Connection: Keep-Alive ETag: "575e1f7c-115" Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Pragma: no-cache Accept-Ranges: bytes
|
通过-H可以自己定义特定的header
1
| $ curl -H "Referer: www.example.com" -H "User-Agent: Custom-User-Agent" http://www.baidu.com
|
13.POST请求
通过-X指定请求方式,如GET、POST、HEAD等
通过-d指定发送的数据
1
| $ curl -d "userName=tom&passwd=123456" -X POST http://www.example.com/login
|
14.安静模式
通过-s不显示错误信息和进度条
通过-S与-s使用时候输出一条错误信息
1
| $ curl -s 'www.baidu.com'
|
15.设置超时时间
通过–connect-timeout设置超时时间
1
| $ curl --connect-timeout 2 'www.baidu.com'
|
16.测试输出变量
通过-w用于在一次完整且成功的操作后输出指定格式的内容到标准输出
1 2
| $ curl -vo /dev/null -s -w '%{http_code}\n' 'www.baidu.com' 200
|
常用的变量内容
url_effective:获取最终url,如有跳转需要知道最终301跳转到的地址
http_code:获取http状态码
time_total:访问总时间,精确到小数点后三位
time_namelookup:DNS解析所用的时间
time_connect:TCP建立连接所用时间
size_download:下载文件的大小
size_header:下载header大小
size_request:请求大小
speed_download:下载速度
content_type:文件类型