屏蔽蜘蛛访问统计可避免搜索引擎抓取行为污染 PV 数据,让流量数据更接近真实用户行为。
一、为什么需要屏蔽蜘蛛统计
主流搜索引擎蜘蛛日抓取量可达数千次,若不区分会大幅抬高 PV 与跳出率指标,干扰运营判断。屏蔽的核心是识别蜘蛛 UA 并在统计代码执行前退出。
二、识别蜘蛛的方法
蜘蛛 UA 通常包含 Baiduspider、Googlebot、360Spider、Sogou web spider、Bingbot 等关键字。可在 PHP 端通过 $_SERVER['HTTP_USER_AGENT'] 正则匹配。
三、PHP 层屏蔽方案
3.1 在统计插件入口判断
// /plus/stat/count.php 顶部
function isSpider(){
$ua=strtolower($_SERVER['HTTP_USER_AGENT']??'');
$bots=['baiduspider','googlebot','360spider','sogou','bingbot','bytespider'];
foreach($bots as $b){
if(strpos($ua,$b)!==false) return true;
}
return false;
}
if(isSpider()) exit;
3.2 在 footer 模板中判断
<?php if(!isSpider()): ?>
<script>var _hmt=_hmt||[];...</script>
<?php endif; ?>
四、JS 端屏蔽(客户端识别)
若使用纯 JS 统计,可在 navigator.userAgent 中判断后再加载脚本:
var ua=navigator.userAgent.toLowerCase();
var bots=['baiduspider','googlebot','360spider','sogou'];
var isBot=bots.some(function(b){return ua.indexOf(b)>-1});
if(!isBot){
// 加载 hm.js
}
注意:JS 端识别不可靠,蜘蛛可能不执行 JS。建议优先使用 PHP 端屏蔽。
五、利用 robots.txt 限制
User-agent: Baiduspider
Disallow: /plus/stat/
Disallow: /*?act=log
User-agent: *
Disallow: /plus/stat/count.php
robots.txt 不直接屏蔽统计调用,但能阻止蜘蛛抓取统计相关 URL,避免在搜索结果中暴露统计接口。
六、常见问题原因分析
6.1 屏蔽后仍统计到蜘蛛
原因:UA 伪装(部分蜘蛛 UA 异常)或蜘蛛执行了 JS 但未携带标准 UA。
解决:维护 IP 段白名单,结合蜘蛛 IP 库(百度官方公布)做双重判断。
6.2 误伤真实用户
原因:UA 关键字过宽,如包含 bot,可能误伤"robot"用户。
| 错误关键字 | 风险 | 建议 |
|---|---|---|
| bot | 误伤 | 使用 googlebot |
| spider | 一般安全 | 组合判断 |
七、最佳实践建议
采用"UA 关键字 + IP 段"双因子判断,并在 dede_count_ip 表中标记蜘蛛访问记录(不删除),便于后续审计。每日生成蜘蛛访问日志,对比百度站长抓取频次验证屏蔽效果。
八、行动指引
落地屏蔽方案后,建议连续观察一周数据,对比屏蔽前后的 PV 与跳出率变化。同时将蜘蛛抓取日志导入 Excel 透视分析,找出抓取频次最高的页面并优化抓取预算,让搜索引擎资源更高效地分配到核心页面。