平时测试和查询访问都需要用到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
############## 20.1%
# 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
$ curl -C -O http://www.gnu.org/software/gettext/manual/gettext.html
############### 21.1%

3.重定向

通过-L实现强制重定向

1
$ curl -L 'http://www.google.com'

4.网络限速

1
2
# 下载速度最大不会超过1000KB/s
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来模仿浏览器或客户端

1
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" 'http://www.linux.com'

8.伪造referer

通过-e能伪造referer,绕开服务器的访问检查

1
$ curl -e "www.linux.com" "http://www.linux.com"

9.使用和保存cookie

1
2
3
4
5
# 保存cookie信息
$ curl -c cookie.txt 'http://www.linux.com'
# 使用cookie
$ 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

12.自定义header头

通过-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:文件类型