别看我站小,其实爬虫很喜欢我这里(
所以统计页经常收到一大堆垃圾数据,对分析造成了极大的影响.
那咋办嘛(
\#0 分析
我这里遭到的数据污染,都是这样的:
操作系统:macOS
网络服务商:电信
屏幕分辨率:1024x768
屏幕颜色:32-bit操作系统:Win 7
网络服务商:网通
屏幕分辨率:1024x768
屏幕颜色:32-bit
而一个普通的访客:
操作系统:Win 7
网络服务商:移动
屏幕分辨率:1366x768
屏幕颜色:24-bit
可以看出非常明显的特征:
- 分辨率为1024*768 (这种分辨率已经极其少见)
- 颜色深度为32 (家用显示器基本上只有24)
- 这种组合更是诡异
那不用洗了,直接前端过滤掉就好了.
\#1 实践
那还不简单,直接一句话:
如果长为1024宽为768颜色深度为32那就是爬虫.
那就不执行脚本就好了.
好,现在我们来看一下我们的统计代码:
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?4153f4c657e50d7beb41d9a92caf78a2";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
可以看见,统计脚本的主要加载过程在那个function里,这就可以很方便控制他加不加载了,若不加载只需要套一个return false
就行了.
那么,逻辑写成js就是:
if(window.screen.width==1024&&window.screen.height==768&&window.screen.colorDepth==32){
return 0;
}
压缩一下:
var Ws = window.screen;if(Ws.width==1024&&Ws.height==768&&Ws.colorDepth==32){return;}
放进去:
var _hmt = _hmt || [];
(function() {
var Ws = window.screen;if(Ws.width==1024&&Ws.height==768&&Ws.colorDepth==32){return;}
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?4153f4c657e50d7beb41d9a92caf78a2";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
爬虫给我爬.
\#2 附言
记得随机应变,活学活用.
翻车了不要找我.png
解决方案:安装WordPress,下载WP Statistics插件
我的滑稽插不进去了.........