本文的核心内容:curl命令。
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。有时需要在容器内部请求接口,curl命令就可以很好的解决问题。
1. 获取页面内容
当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。
curl http://www.baidu.com
2. 显示 HTTP 请求 响应的头部信息 I
如果我们只想要显示 HTTP响应头部,而不显示文件内容,可以使用 -I 选项:
curl -I http://www.baidu.com
3. 显示 HTTP请求 响应的头部信息 + 页面内容 i
同时显示 HTTP 响应头部和文件内容,使用 -i 选项:
curl -i http://www.baidu.com
4. 显示HTTP请求 响应信息 + 页面内容
curl -v www.baidu.com
-v 选项,--verbose,指定该选项后,可以跟踪URL的连接信息。我们可以根据这个选项看看curl是怎么工作的。
域名解释过程:我们可以得到真正连接的IP地址和端口
请求头信息:其中有使用的协议(HTTP),协议的请求方式(GET)
回应头信息:包含状态码(200),内容格式(text/html),内容长度等。
* Rebuilt URL to: www.baidu.com/
* Trying 61.135.169.125...
* Connected to www.baidu.com (61.135.169.125) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.49.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Content-Length: 2381
< Content-Type: text/html
< Date: Tue, 05 Mar 2019 03:07:19 GMT
< ETag: "588604c4-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
< X-Cache: MISS from HexinFirewall
< Connection: close
<
鐧惧害涓€涓嬶紝浣犲氨鐭ラ亾
©2017 Baidu 浣跨敤
鐧惧害鍓嶅繀璇?/a> 鎰忚
鍙嶉 浜琁CP璇?30173鍙?nbsp;
p>
* Closing connection 0
5. 使用 -A 自定义 User-Agent
我们可以使用 -A 来自定义用户代理,例如下面的命令将伪装成安卓火狐浏览器对网页进行请求:
curl -A "Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0" http://www.baidu.com
6. 使用 -H 自定义 header
当我们需要传递特定的 header 的时候,可以仿照以下命令来写:
curl -H "User-Agent: Custom-User-Agent" http://www.baidu.com
7. 使用 -L 自动跳转
当访问的网站返回一个新的跳转地址(重定向),使用-L自动跳转。
curl -L http://www.baidu.com
8. -X 选项,指定请求方式, -data选项,带参连接
请求的方式,包括GET、PUT、POST、DELETE四种方式。这四种请求方式,对于在做RESTFUL接口开发和测试的人来说,非常方便。
curl -X POST -data 'user=Maps&age=22' http://www.baidu.com
如果请求数据需要编码
curl -X POST -data-urlencode 'user=Maps&age=22' http://www.baidu.com
9. 保存网页内容
使用linux的重定向功能保存
curl https://www.baidu.com >> baidu.html
使用curl的内置option:-o(小写)保存网页
curl -o baidu.html https://www.baidu.com