如何精确统计真人流量,忽略搜索引擎、忽略爬虫?
一般来说,现在的搜索引擎和爬虫都会执行javascript,可以抓取执行js之后的结果,但是搜索引擎和爬虫只是快速抓取网页内容,抓完后立即关掉了网页。而真人流量有一定的浏览时长,不会一秒之内就看完,看的过程中还会滚动鼠标(或者滑动手机浏览器屏幕)。
所以,基于上面的规律,我们制定了以下两条策略,同时满足才向后台发送统计信息。
1、打开网页先等1.5秒
2、检测鼠标滚动或者触摸屏触摸
下面是一个示例javascript程序:
var visit_flag = false;
function visit_cnt(){
if(visit_flag == false){
visit_flag = true;
window.removeEventListener("scroll", visit_cnt);
window.removeEventListener("touchstart", visit_cnt);
var cur_url = window.location.href;
var cur_title = document.title;
var cur_agent = navigator.userAgent;
var cur_ref = document.referrer;
let myxhr = new XMLHttpRequest();
myxhr.open('POST', '/url_inc_handle', true);
myxhr.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
myxhr.responseType = 'json';
myxhr.onreadystatechange = function() {
if(myxhr.readyState === 4 && myxhr.status === 200){
}
}
var post_string = 'url=' + cur_url + '&title=' + cur_title + '&agent=' + cur_agent + '&ref=' + cur_ref;
myxhr.send(post_string);
}
}
function add_scroll_touch_listener(){
window.addEventListener("scroll", visit_cnt);
window.addEventListener("touchstart", visit_cnt);
}
setTimeout(add_scroll_touch_listener, 1500);
经过实测,本示例程序有不错的过滤效果。