织梦如何屏蔽统计蜘蛛访问

屏蔽蜘蛛访问统计可避免搜索引擎抓取行为污染 PV 数据,让流量数据更接近真实用户行为。

一、为什么需要屏蔽蜘蛛统计

主流搜索引擎蜘蛛日抓取量可达数千次,若不区分会大幅抬高 PV 与跳出率指标,干扰运营判断。屏蔽的核心是识别蜘蛛 UA 并在统计代码执行前退出。

二、识别蜘蛛的方法

蜘蛛 UA 通常包含 BaiduspiderGooglebot360SpiderSogou web spiderBingbot 等关键字。可在 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 透视分析,找出抓取频次最高的页面并优化抓取预算,让搜索引擎资源更高效地分配到核心页面。