curl -vvv
是一个用于在命令行中执行 HTTP 请求的命令,其中 -vvv
是一个选项,用于启用详细的调试输出。
vvv
: 这是一个选项,表示启用详细的调试输出。每个v
增加调试信息的详细程度,vvv
是最高级别的详细输出。
详细输出包括:
- 请求的详细信息(如头信息、数据等)
- 响应的详细信息(如头信息、数据等)
- 连接和传输的详细信息(如 DNS 解析、连接建立、数据传输等)
这个选项对于调试网络请求非常有用,可以帮助你了解请求和响应的具体细节。
示例
以curl -vvv https://wn777.cn (也是我自己的网站,欢迎大家访问 眨眼)举例,输出结果可以分为几个部分,
解释下各部分
-
连接信息:
* Trying 123.56.184.214:443... * TCP_NODELAY set * Connected to wn777.cn (123.56.184.214) port 443 (#0)
- 这部分显示了
curl
尝试连接到目标服务器的 IP 地址和端口,并且成功建立了 TCP 连接。
- 这部分显示了
-
TLS/SSL 握手信息:
* ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1
- 这部分显示了 TLS/SSL 握手的详细过程,包括客户端和服务器之间的握手消息交换,以及最终使用的加密协议和算法。
-
证书信息:
* Server certificate: * subject: CN=wn777.cn * start date: Jun 3 00:00:00 2024 GMT * expire date: Aug 31 23:59:59 2024 GMT * subjectAltName: host "wn777.cn" matched cert's "wn777.cn" * issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=Encryption Everywhere DV TLS CA - G2 * SSL certificate verify ok.
- 这部分显示了服务器证书的详细信息,包括证书的主题、有效期、颁发者等信息,并确认证书验证通过。
-
HTTP 请求头:
> GET / HTTP/1.1 > Host: wn777.cn > User-Agent: curl/7.68.0 > Accept: */*
-
这部分显示了
curl
发送的 HTTP 请求头信息,包括请求方法(GET)、目标主机、用户代理和接受的内容类型。HTTP 响应头:
-
< HTTP/1.1 200 OK
< Server: nginx/1.18.0 (Ubuntu)
< Date: Tue, 30 Jul 2024 08:27:45 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Link: <https://wn777.cn/index.php?rest_route=/>; rel="<https://api.w.org/>"
-
这部分显示了服务器返回的 HTTP 响应头信息,包括状态码(200 OK)、服务器类型、响应日期、内容类型、传输编码、连接状态和相关链接。
**HTTP 响应体**:
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html" charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="profile" href="//gmpg.org/xfn/11">
<title>晚间消息俱乐部</title>
<meta name='robots' content='max-image-preview:large' />
<script>document.documentElement.className = document.documentElement.className.replace("no-js","js");</script>
<link rel='dns-prefetch' href='//wn777.cn' />
<link rel="alternate" type="application/rss+xml" title="晚间消息俱乐部 » Feed" href="<https://wn777.cn/?feed=rss2>" />
<link rel="alternate" type="application/rss+xml" title="晚间消息俱乐部 » 评论 Feed" href="<https://wn777.cn/?feed=comments-rss2>" />
<script type="text/javascript">
- 这部分是服务器返回的 HTML 内容,即网页的源代码。