网站劫持检测:一键查出页面里有没有被人塞了东西

支持 http 与 https,只查 80 和 443 端口。同一个域名 10 分钟内重复检测会直接给缓存结果。

一、什么样的现象说明页面被动了手脚

先把症状列出来。对得上其中几条,再去检测,比漫无目的地跑一遍更有方向。

页面底部多出广告或浮窗

尤其是手机流量下访问会弹、连 Wi-Fi 就不弹的。这是最典型的一条,运营商侧插入的广告通常只在特定网络下出现。

打开速度忽然变慢,还转了一下跳转

地址栏闪过去一个不认识的域名,或者页面先跳到某个中转页再回来。抓包能看到中间多了一跳。

浏览器报「您的连接不是私密连接」

你自己没换证书,但访客看到证书错误。要么是证书过期,要么是有人在中间换了证书。

证书签发者变了

你申请的是 Let's Encrypt,访客看到的是别的 CA,甚至是自签名。这条几乎可以定性。

部分访客看到「不安全」提示

页面本身是 https,但里面混着 http 的图片或脚本。浏览器会提示部分内容不安全,而这类明文资源在途中可以被任意替换。

同样的域名,不同网络打开不一样

公司网、家宽、手机流量,看到的页面内容有差别。说明某个环节的出口被改过。

要分清两件事:一种是你的服务器被人改了(挂马、被入侵),一种是传输链路被人改了(运营商劫持、网关改写)。这个工具主要看后者,也就是页面从服务器出来之后有没有被动过。前者要看服务器上的文件有没有被改,那是另一套办法。

二、它看什么,看不到什么

看得到

页面引用了哪些外部域名、其中有没有广告类服务;HTTPS 页面里有没有混着 http 明文资源;跳转链有几跳、有没有跨主域;证书由谁签发;域名解析到哪些 IP。

看不到:只对特定人群插广告

有些劫持只对特定地区或特定运营商生效。本站服务器是单点,抓到的结果只代表它那一次、那一条链路。

看不到:只在你自己电脑上发生的问题

如果被改的是你本机的 hosts、DNS 或浏览器插件,从服务器这边看是一切正常的。

看不到:服务器已被入侵

如果攻击者直接改了你的源码,页面里那些东西「看起来就是你自己的」,工具没法分辨。

三、查出问题之后怎么办

先做这个:把「页面上引用的外部域名」那一栏抄下来,逐个问自己一句话 —— 这个域名是我加的吗?是自己加的,划掉;不认识的,就是线索。

对不认识的域名,按下面的顺序查:

1. 全局搜一遍源码

在你的模板、插件、主题文件里搜这个域名。搜得到,说明是代码里的;搜不到,它就很可能来自外部注入。

2. 看它加载的是什么

清单里「出现位置」那栏会标出它是 script、iframe 还是 img。加载脚本和 iframe 的最需要警惕,图片相对轻。

3. 换个网络再抓一次

用手机流量、用另一条宽带各抓一次,对比清单有没有变化。会变的,就是链路侧的问题。

4. 混合内容优先修

如果报出了 http 明文资源,先把它们修掉。这是你完全可控的,也是被改写的入口。

四、常见问题

报出「未识别」的域名,是不是就有问题?

不是。未识别只表示它不在本站内置的常见服务库里,绝大多数情况下是你自己接的某个小服务、自建 CDN 或者冷门库。要判断有没有问题,看你能不能说出它是干什么的。

为什么抓不到我的网站?

常见原因有几种:域名解析不了;站点只允许特定地区访问,而本站服务器在国内;服务器屏蔽了非浏览器的请求;或者地址填错了。抓不到时工具会明确说抓不到,不会给你一个「安全」的错误结论。

它会不会被拿去乱扫别人的站?

不会。它只允许 http/https、只允许 80 和 443 端口,并且会先解析目标域名、检查解析出的每个地址是不是公网地址,是内网或保留地址一律拒绝;跳转的每一跳都会重新检查一遍。所以它既扫不了端口,也够不到内网。

检测会记录什么?

会记录访问时间、来源 IP、浏览器类型,以及本次查询的域名和检测结论,仅用于统计与排查。不读取任何文件,也不涉及你网站的内容。详见本站隐私政策。

结果里显示「安全」就能放心了吗?

不能。这只说明这一次抓取没有发现问题,覆盖范围见上面第二节。劫持往往是针对特定网络、特定地区生效的,要判断得在多个环境下重复验证。