前两天一个做企业站的朋友半夜来消息,说客户点他的网站,浏览器跳出来一整片白,地址栏里只孤零零躺着about:blank,客户当场就以为网站被黑了。我让他先别动服务器,按顺序换设备、换网络测了两轮,最后发现是客户自己电脑上的一个浏览器插件在捣鬼,禁用之后页面立刻就正常了。像这种“打开网站变成空白页”的情况,我一年要碰上七八回,绝大多数都出在本地设备或本地网络上,真正轮到服务器背锅的反而是少数。今天这篇就把整套分层判断的思路讲透,从最简单的换网络测试,一直讲到服务器上的跳转脚本怎么揪出来。

先认清现象:about:blank到底是个啥
about:blank是浏览器的一个内置空白页面,它压根不是网站服务器返回的内容。正常打开一个网页时,浏览器要经过解析域名、建立连接、请求并接收HTML、然后渲染这几个步骤,地址栏里显示的应该是你输入的域名。而一旦你看到的是一片纯白、地址栏写着about:blank,基本可以断定请求在中间某一环被人拦了或者改了:要么返回了一个空的文档,要么浏览器根本没发出针对这个域名的请求,直接被本地某个程序重定向到这个内置页面上去了。这个区别很关键,它决定了你该往本地查还是往服务器查。
三步基础测试,先分清是哪一层出问题
动手之前先做三个测试,做完心里就有底了。第一,把手机WiFi关掉,用4G流量访问同一个网址,这一步能排除掉本地网络的干扰;第二,在电脑上开一个无痕窗口再访问一次,无痕模式不会加载已装的扩展,也不吃本地缓存,可以顺手排除掉缓存和插件的嫌疑;第三,把电脑的DNS临时改成114.114.114.114,保存后再测一遍,测完记得改回原来的设置。判断标准很简单:如果只有你这一台设备、只有你连接的这个网络出现空白页,换手机、换流量就正常,那问题就在本地,插件劫持或者运营商劫持的可能性最大。
本地排查第一步:把浏览器插件一个个关掉试
确定问题出在本地,接下来的活儿就很轻了。打开浏览器的扩展管理页,把插件先全部禁用,再一个一个打开,哪一个开启之后空白页跟着回来,元凶就是它,直接卸载别舍不得。尤其是那些“网页加速”“去广告”“导航主页”类的插件,最常见的手法就是偷偷改写页面跳转。顺手提一句,从下载站捆着装上的插件更要多留个心眼,有些会强行把入口页重定向到about:blank,表现跟被黑几乎一模一样。还有一个容易被忽略的点:如果只有某一个浏览器出问题,其他浏览器正常,那基本可以锁定是这个浏览器的配置或插件在捣鬼,换浏览器验证一次能省很多功夫。
本地排查第二步:看hosts里有没有被人写死IP
插件清完还是不行,就去查hosts文件。Windows在C:\Windows\System32\drivers\etc\hosts,这个文件没有扩展名,用记事本打开就行;Mac和Linux在/etc/hosts。正常的hosts里要么全是注释,要么只留着localhost的几行记录,一旦看到自己网站域名后面被写上了陌生IP,那就是铁证,把那一行删掉保存即可。改完记得把浏览器缓存和DNS缓存都刷一遍,Windows上用ipconfig /flushdns清一下解析缓存,不然旧记录还会赖着不走。改hosts和DNS都要管理员权限,动手前先把原文件复制一份出来,出问题能立刻还原。
怀疑运营商劫持:换DNS验证,手机切流量再确认
如果换了台设备、换个浏览器还是白,但一切到手机流量就恢复正常,那八成是运营商或者中间链路在做DNS劫持,把你的域名解析到了一个乱七八糟的地址上。验证方法也简单,把DNS临时改成114.114.114.114再访问,如果立刻恢复正常,基本就能确认是原来的DNS被污染了。这时候别只改一台设备,手机、家里路由器、公司电脑都换成公共DNS,把路由器里的DNS设置一并改掉,问题才算按下去。遇到弹广告、插跳转这类明显劫持,可以打运营商客服报障,要求他们处理,保留好截图和发生时间,这是最有力的证据。
多网络多设备全复现,才轮到查服务器
手机流量、家里WiFi、公司网络全试过,两三台设备都是空白页,这时候才该往服务器方向查。第一步不是瞎猜,而是先要一个明确的答案:在终端里执行curl -I加域名,只看返回的响应头,Windows用户打开PowerShell跑curl.exe -I https://你的域名,效果一样。这一步的意义在于把“页面显示不对”变成“HTTP层面到底通了没有”,有了状态码再往下走,就不会东一榔头西一棒子。
状态码怎么看,我给你对照着拆一遍。返回200说明服务器本身正常,请求能拿到完整响应,那问题就在浏览器端,回头把插件、缓存、代理设置挨个过一遍;返回301或302,重点看Location那一行跳去了哪里,如果指向一个完全不认识的地址,就是跳转配置被人动过手脚了;返回5xx,说明后端服务挂了或者配置写错了,先去看PHP和Nginx的错误日志,那里通常有最直接的原因;要是什么返回都没有,连不上,那问题多半在解析或者链路层面,跟服务器里的文件关系不大。
服务器上的常见坑:跳转脚本、加密马、异常rewrite
确认要查服务器之后,先弄清楚该盯哪几个地方。头一个重灾区是主题和插件目录,尤其从外面下载的破解主题、盗版插件,代码里塞一段跳转脚本太常见了,在站点根目录下执行grep -rn “window.location” wp-content/themes,再对插件目录跑一遍,顺便搜一下eval和base64_decode,命中的文件挨个打开看;第二个是伪装得更深的加密马,文件里出现大段没有意义的乱码,或者一长串base64编码,这就是典型的挂马,别想着手工还原,删掉再从官方渠道装一份干净的最省事。
接着看两个配置文件。先看.htaccess,正常内容很短,一旦多出一条RewriteRule并且指向陌生域名,那就是被人写进去了;再翻Nginx的站点配置,重点看rewrite和return这两类规则,发现异常先编辑改掉,然后执行nginx -t确认语法没写坏,最后Nginx用nginx -s reload、Apache用systemctl reload apache2平滑重载,别暴力重启,免得把正在访问的用户全打断。还有一点特别容易漏,定时任务里可能被塞了陌生脚本,隔几分钟就重新写一遍配置,所以清完文件一定顺手看一眼crontab -l,不然第二天它又长回来了。
域名有没有被标记?去百度网址安全中心查一下
网页被拦、被跳,还有一个原因得单独拎出来说:域名被安全机构标记成风险网站了。这一步很多人会漏掉,其实花两分钟就能查完。打开百度网址安全中心,输入域名查一下有没有被标记,如果结果显示存在风险,用户访问时往往先看到拦截提示,表现上确实像打不开或者空白页,具体以页面的实际提示为准。确认被标记了也别急,先把服务器上的恶意代码清理干净,再去申诉入口提交申请,材料按页面要求如实填,审核周期以官方页面说明为准。要是申诉提交之后一直没消息,通常不是流程没了,而是在排队或者需要补充材料,耐心等就行,反复重复提交反而会拖慢处理速度。
收尾加固:以后怎么少踩这几个坑
事情解决之后,顺手做几件加固的活,能省掉以后不少麻烦。插件只从官方市场或者可信来源装,主题同理,坚决不用破解版;WordPress核心、主题、插件都保持更新,老版本的漏洞是被挂马的头号原因;后台和数据库用强密码,后台登录地址加个限制,条件允许就上两步验证。再就是定期做三件小事:每周扫一眼网站根目录有没有多出来的陌生文件,每月用官方校验工具对一遍核心文件的完整性,把服务器访问日志和统计报表拉出来瞄两眼,看到莫名其妙的流量和外链顺手查一下。这套动作花不了多少时间,但真出事的时候能帮你少熬好几个通宵。
把整件事捋一遍:网站打开变空白,先别急着怀疑服务器。用换4G流量、开无痕窗口、改DNS三招分层测一遍,确认只有某台设备或某个网络出问题,那就是本地的插件劫持或者hosts被改,清插件、删hosts里的陌生记录就能搞定;只有多网络多设备全部复现,才动服务器这套流程,curl -I看状态码,再在主题和插件目录里搜跳转脚本与加密马,检查.htaccess和Nginx有没有异常的rewrite规则,最后去百度网址安全中心确认域名状态。顺序对了,这类问题大半天就能收工;顺序错了,你可能把服务器重装三遍,空白页还老老实实待在那儿。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!