游客发表
打开浏览器按下F12,测个网站看到Network面板里密密麻麻的测个网站请求,这大概是测个网站判断一个网站死活最快的方式。但真要“测”一个网站,测个网站远不止看它能不能打开。测个网站我习惯从四个维度下手:能不能访问、测个网站快不快、测个网站稳不稳、测个网站安不安全。测个网站
先说访问。测个网站直接用curl,测个网站别用浏览器。测个网站浏览器会帮你缓存、测个网站重试、测个网站跳转,测个网站掩盖很多问题。一行命令:curl -I -m 10 https://example.com。看返回的HTTP状态码。200是正常,301/302是跳转,403是拒绝,404是找不到,500是服务器炸了,502是网关挂了,504是后端超时。如果连状态码都拿不到,比如卡住不动或者返回“Connection refused”,那就是DNS解析失败、端口没开或者防火墙拦了。我遇到过一种情况:浏览器能打开,curl却超时。原因是网站用了CDN,CDN节点回源失败但边缘缓存还在,用户看到的是旧页面,实际源站已经挂了。所以curl要加--resolve指定源站IP再测一遍。
速度这块,别只看首页加载时间。用curl -w输出详细耗时:DNS解析多久、TCP连接多久、TLS握手多久、首字节多久、总时间多久。公式大致是:curl -o /dev/null -s -w "dns:%{ time_namelookup} connect:%{ time_connect} ssl:%{ time_appconnect} ttfb:%{ time_starttransfer} total:%{ time_total}\n" https://example.com。ttfb超过500毫秒就要查后端了,可能是数据库慢查询或者接口阻塞。总时间超过3秒,用户大概率会关掉。另外,测静态资源用ab或者wrk压一下,看QPS和延迟分布。wrk比ab更准,因为ab是单线程的,压不满多核CPU。
稳定性不是跑一次就完事。写个脚本每30秒curl一次,记录状态码和耗时,跑24小时。看有没有间歇性502或者耗时尖刺。我见过一个网站,白天正常,凌晨3点必挂5分钟——备份任务把数据库连接池占满了。这种问题不持续测根本发现不了。也可以用外部监控服务,比如UptimeRobot或者Better Stack,它们从多个地理位置探测,能区分是局部网络问题还是全局故障。免费版一般5分钟一次,够用了。
安全方面,先看HTTPS证书。openssl s_client -connect example.com:443 -servername example.com,检查证书有效期、颁发者、是否匹配域名。过期证书浏览器会拦截,但有些API客户端不会,所以得单独测。再看HTTP安全头:curl -I输出里有没有Strict-Transport-Security、X-Content-Type-Options、Content-Security-Policy。缺HSTS的话,中间人可以把HTTPS降级成HTTP。缺CSP的话,XSS攻击更容易得手。还有,试试直接访问http://example.com,看会不会自动跳转到HTTPS。不跳的话,用户第一次访问就是明文,密码可能被嗅探。
最后说个容易忽略的点:测网站别只测首页。抓几个典型页面——登录页、搜索页、带参数的详情页、POST接口。登录页要测CSRF token有没有、密码字段是不是type=password、失败几次会不会锁账号。搜索页测SQL注入,加个单引号看报不报错。详情页测ID遍历,把?id=1改成?id=2看能不能越权访问。POST接口用curl -X POST -d发数据,看返回是不是JSON、有没有泄露堆栈信息。
工具方面,我常用这几个:curl看原始响应,wrk压性能,openssl查证书,nmap扫端口,whatweb识别技术栈。浏览器DevTools的Lighthouse跑个评分也行,但它偏向前端优化,后端和网络层的问题它测不出来。别迷信一个工具,交叉验证才靠谱。
测网站这事,说到底就是模拟各种糟糕情况:网络断了、服务器慢了、证书过期了、有人恶意请求了。你能想到的坏情况越多,测出来的问题就越全。别等用户投诉了才去查日志。
友情链接