不用打开浏览器,也能检查网站是否正常:curl 入门实战
一、为什么值得学会 curl?
遇到网页无法访问时,我们通常会反复刷新页面,或者尝试更换浏览器。但这些操作不一定能告诉我们问题出在哪里。
例如:
- 网站真的无法访问,还是页面地址已经变更?
- 服务器返回了错误,还是网络连接超时?
- 一个网址经过了几次跳转,最终去了哪里?
这时,curl 就能派上用场。
curl 是一款常见的命令行数据传输工具,支持 HTTP、HTTPS 等多种协议。它可以直接向网站发送请求,并将响应结果显示在终端中。它不仅适合开发者调试接口,也适合普通用户排查简单的网站访问问题。
二、第一步:检查网站是否能够响应
首先,打开终端。
- macOS:打开「终端」应用。
- Linux:打开系统自带的终端。
- Windows:可以使用 WSL 或 Git Bash 运行本文的示例。
输入以下命令:
curl -I https://example.com
这里的 -I 表示只请求响应头,而不下载完整的网页正文。
如果网站正常响应,你可能会看到类似这样的内容:
HTTP/2 200
content-type: text/html
其中最值得关注的是第一行的状态码。
常见的 HTTP 状态码包括:
- 200: 请求成功。
- 301、302: 资源发生了重定向,通常需要前往另一个地址。
- 403: 服务器拒绝当前请求。
- 404: 请求的资源不存在,或者服务器没有找到它。
- 500: 服务器发生了内部错误。
- 503: 服务暂时无法处理请求。
需要注意,-I 发送的是 HEAD 请求。有些网站对 HEAD 请求的处理方式与普通网页请求不同,因此出现异常时,可以再用 GET 请求验证。
三、第二步:只看关键信息,不让终端刷屏
如果你只是想知道网站是否响应、耗时多久,就没有必要查看全部响应内容。
可以使用下面这条命令:
curl -sS -o /dev/null \
-w '状态码:%{http_code}\n耗时:%{time_total}s\n' \
--max-time 10 https://example.com
这条命令适用于 macOS 和 Linux 终端,各个参数的作用如下。
1. -sS:减少无关输出
s 表示静默模式,S 则让错误信息在需要时仍然显示。这样既不会显示普通进度信息,也不容易错过连接错误。
2. -o /dev/null:丢弃网页正文
我们只关心检查结果,不需要把整个网页下载到终端,所以可以将正文丢弃。
3. -w:自定义输出内容
%{http_code} 表示 HTTP 状态码,%{time_total} 表示整个传输过程耗费的时间。
4. --max-time 10:限制最长耗时
如果请求一直没有完成,curl 最多等待 10 秒,避免命令长时间挂起。
如果网站正常返回,输出可能是:
状态码:200
耗时:0.245123s
这表示请求成功,整个传输过程约用了 0.25 秒。实际耗时会受到网络、服务器负载和响应内容大小等因素影响。
四、第三步:检查网址跳转是否正常
有些网站会将旧网址跳转到新网址,或者将 HTTP 地址重定向到 HTTPS 地址。
如果只执行普通请求,curl 默认不会自动跟随 HTTP 重定向。想查看跳转后的结果,可以加上 -L 参数:
curl -sS -o /dev/null \
-w '状态码:%{http_code}\n最终地址:%{url_effective}\n' \
-L --max-time 10 https://example.com
这里新增了两个实用功能:
-L:跟随服务器返回的重定向。%{url_effective}:显示最终使用的 URL。
这在检查网站迁移、旧链接失效和网址跳转规则时特别有用。
例如,你输入的是旧地址,最终地址却变成了新的域名,就可以据此确认请求实际到达了哪里。
不过,如果你需要排查每一次跳转的详细过程,还需要进一步查看响应头或使用 curl 的详细输出功能。
五、动手练习:给自己的网站做一次快速检查
假设你运营一个个人博客,希望每天发布文章前,快速确认首页是否能够正常响应。
可以先创建一个简单的 Shell 脚本。
新建文件 check_site.sh,写入以下内容:
#!/bin/sh
URL="https://example.com"
curl -sS -o /dev/null \
-w "网址:%{url_effective}\n状态码:%{http_code}\n耗时:%{time_total}s\n" \
-L --max-time 10 "$URL"
echo "检查完成"
将 https://example.com 替换为自己的网站地址,然后运行:
sh check_site.sh
终端就会显示最终访问地址、HTTP 状态码和请求耗时。
你还可以把这个脚本保存起来,在网站打不开时手动运行,用来辅助判断问题出在网络连接、网址跳转还是服务器响应上。
要注意的是,状态码为 200 不代表整个网站的所有功能都正常。它只能说明这次请求获得了成功响应,不能证明登录、搜索、支付等功能都没有问题。
另外,curl 遇到 HTTP 404 或 500 时,默认情况下仍可能正常结束命令执行,因此不能只看命令有没有报错,还要检查实际的 HTTP 状态码。
总结
curl 不只是程序员的调试工具,也是一款实用的日常效率工具。学会查看状态码、测量响应时间和跟随重定向,就能用几条简单命令快速了解网站的响应情况。
下次遇到网页打不开时,先别急着反复刷新,试着用 curl 检查一下,也许你会更快找到问题的线索。
- 点赞
- 收藏
- 关注作者
评论(0)