jquery中防刷IP流量软件影响统计的一点对策


Posted in Javascript onJuly 10, 2011

遭遇刷IP、刷流量软件的困扰

      本以为有效控制同一天对同一个IP仅算一次的方案就能有效防止用户多次刷新地址作弊的现象,我得承认涉世未深孤陋寡闻 - -,一直忽视现在的刷流量软件如此的强大,我们的项目也遭遇使用刷流量软件的情况,因而产生不少垃圾数据,甚至影响统计的准确性。

      为解决这种情况也特意下载了两款知名度比较高的刷流量软件“流量宝”和“流量精灵”了解一下,不用不知道,一用确实是个好东西。

      这两款软件的原理都一样,估计其它的也差不多吧,就是利用网络互访原理,利用网络节点地域差异性,用户随机性,使访问效果真实有效,也就是你的电脑挂着一个刷流量的软件的时候,你的地址会被也在挂机的所有用户访问,当然人家帮你刷的同时你也在帮人家刷,这一切功夫软件都在背后帮你完成,挂上几分钟马上就能看到流量慢慢上来,说了不少废话,下面也说说对策。

应对方案

      鉴于部分网友不喜欢看全文就下断论的情况,这里强调一下,所有提交的后台的数据都有做IP检查的,而本文讨论的就是基于这种情况下被刷IP的应对方案。

      方案一:通过Ajax异步提交数据(无效)

      起初推广地址被点击时在后台解析页面是会先记录访客的IP、时间等信息,这种方式显然很难防不了刷流量软件,因此便考虑通过Ajax异步提交数据的形式。

      刚开始还是低估这些流氓软件,以为只是通过简单的模拟http请求不会触发js脚本,所以第一种方案是通过页面加载完成后,通过ajax异步提交记录请求,结果无效,实验证明此方式仅对比较低级的机器人有效;

      方案二:判断请求的客户端浏览器窗口宽度或高度(无效)

      通过方案一可推测这些流量软件不是单纯的模拟http请求, 也就是通过真实的浏览器请求的,但我挂机“被”帮别人刷流量的同时,并未看到任何网页的打开,只能通过抓包工具看到不停的请求,那我猜想这些刷流量软件是不是隐藏了一个浏览器窗口,或者将浏览器窗口设置得很小很小……对此猜想我通过js判断客户端当前打开的浏览器窗口区域是否大于某个值(如宽300px,高200px,相信没什么人会用这么小的区域看网站吧~),超过一个下限值才通过Ajax提交数据。

      结果还是无效,对此也特意写了小程序记录每一个请求的浏览器类型、窗口大小……,结果令我无语,请求的浏览器可视区域都很正常,甚至分辨率很多比我的显示器还高,自我鄙视ing……

      方案三: 通过鼠标事件作为正常访问的依据有效

      通过几番试验,得出的结论是这些机器人并不简单,但毕竟是机器人,那就考虑通过鼠标事件判断是否机器人,如mousemove、mousedown、mouseover等,当然也可以通过让用户选择点击按钮等认为操作作判断依据(当然要考虑操作体验好不好),下面放个简单脚本:

<script src="jquery-1.4.1.min.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function() { 
var movetimes = 0; //移动次数 
$(document).mousemove(function(even) { 
movetimes++; 
if (movetimes > 100) { //事件被执行次数大于n,设置个比较保守的值 
$(document).unbind("mousemove"); //解除mousemove绑定 
//此处执行异步提交数据 
alert("异步提交记录请求!"); 
} 
}); 
}); 
</script>

总结:

经过多番尝试,最终在第三种方案取得成效,但也不排除日后这些机器人的不断改进而攻破这个简单检验环节,毕竟道高一尺魔高一丈。但机器人毕竟是机器人,不妨多增加点人为操作的条件因素作判断,估计还是能防止这类刷IP流量软件影响统计的。可能由于项目的特殊性,这些方案并不一定适合所有的情形,毕竟这些刷流量软件大多都是些草根站长使用并且通常都是刷自己的网站的:),这里也希望院子里的网友也提提好的建议,如何应对这些刷流量软件,分享下经验。

Javascript 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
js实现选中页面文字将其分享到新浪微博
Nov 05 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
C#微信小程序服务端获取用户解密信息实例代码
Mar 10 Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
原生JS+HTML5实现的可调节写字板功能示例
Aug 30 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
一起写一个即插即用的Vue Loading插件实现
Oct 31 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
Oct 31 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
让你的CSS像Jquery一样做筛选的实现方法
Jul 10 #Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 #Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 #Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
Jul 10 #Javascript
关于jQuery中的end()使用方法
Jul 10 #Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 #Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 #Javascript
You might like
PHP容易忘记的知识点分享
2013/04/30 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php-msf源码详解
2017/12/25 PHP
PHP钩子实现方法解析
2019/05/21 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
详解Vue如何支持JSX语法
2017/11/10 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
python从入门到精通(DAY 2)
2015/12/20 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
土木工程应届生求职信
2013/10/31 职场文书
市场部经理岗位职责
2014/04/10 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
聊聊Python String型列表求最值的问题
2022/01/18 Python
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python
Nebula Graph解决风控业务实践
2022/03/31 MySQL
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫