前言
CURL是一个命令行工具,curl中的c
表示client。用于通过指定URL来上传或者下载数据,并将数据展示出来。
Verbose模式
如果curl得到的结果不是期望的结果,我们可以使用-v
或者--verbose
进入verbose模式获取更多的信息
- 查看通信的过程
curl -v www.baidu.com
得到通信的过程
* Rebuilt URL to: www.baidu.com/
* Trying 14.215.177.39...
* TCP_NODELAY set
* Connected to www.baidu.com (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.54.0
> 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: 2381
< Content-Type: text/html
< Date: Sun, 06 Oct 2019 12:44:39 GMT
< Etag: "588604dd-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:57 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
- 更加详细的信息
如果觉得-v
信息还不够的话,还可以使用--trace-ascii [filename]
选项将完整流程保存到filename
中
curl --trace-ascii dump www.baidu.com
结果如下:
== Info: Rebuilt URL to: www.baidu.com/
== Info: Trying 14.215.177.39...
== Info: TCP_NODELAY set
== Info: Connected to www.baidu.com (127.0.0.1) port 80 (#0)
=> Send header, 77 bytes (0x4d)
0000: GET / HTTP/1.1
0010: Host: www.baidu.com
0025: User-Agent: curl/7.54.0
003e: Accept: */*
004b:
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
<= Recv header, 22 bytes (0x16)
0000: Accept-Ranges: bytes
<= Recv header, 76 bytes (0x4c)
0000: Cache-Control: private, no-cache, no-store, proxy-revalidate, no
// ...
浏览器到curl
image.pngHTTP和curl
- GET/POST/DELETE/PUT等方法
get:
curl -v 192.168.33.1:8080/girls/age/18
post:
curl -v 192.168.33.1:8080/girls -d 'age=14&cupSize=C'
curl -v -X POST 192.168.33.1:8080/girls -d 'age=14&cupSize=C'
put:
curl -v -X PUT -d "age=19&cupSize=C" 192.168.33.1:8080/girls/3
delete:
curl -v -X DELETE 192.168.33.1:8080/girls/3
- 传递自定义Header
提交application/json
JSON 格式的数据
curl -d 'name=dankun' -H 'Content-Type: application/json' http://example.com
Cookies
http是一种无状态的协议,为了在会话中保存一些状态,可以使用Cookies.服务器通过set-cookie
来设置Cookie,客户端就可以在下一次请求中带上这些数据
- 设置cookie
curl --cookie 'name=dankun' http://example/com
- 从文件中读取cookies
curl 默认不会记住服务器设置的Cookie,也不会在下一次的请求中携带Cookie。我们可以把之前的Cookies保存到一个文件中,然后下一次请求中指定curl读取文件中的cookies
curl -b cookie.jar.txt www.baidu.com
- 写cookies到文件中
将www.baidu.com的cookie写入到cookie.jar.txt文件中。
curl -c cookie.jar.txt www.baidu.com
我们可以既从文件中读取Cookies也需要同时保存服务器设置的Cookies。可以使用-b, -c选项:
curl -b cookies.txt -c cookie.jar.txt www.baidu.com
代理配置
可以通过配置代理服务器进行网络访问
curl -x 123.45.67.89:1080 www.baidu.com
忽略输出
-o
代表输出设备,我们将输出设备为空。
curl -v -o /dev/null www.baidu.com
网友评论