jquery中防刷IP流量软件影响统计的一点对策
2011-07-10 00:00
645 查看
遭遇刷IP、刷流量软件的困扰
本以为有效控制同一天对同一个IP仅算一次的方案就能有效防止用户多次刷新地址作弊的现象,我得承认涉世未深孤陋寡闻 - -,一直忽视现在的刷流量软件如此的强大,我们的项目也遭遇使用刷流量软件的情况,因而产生不少垃圾数据,甚至影响统计的准确性。
为解决这种情况也特意下载了两款知名度比较高的刷流量软件“流量宝”和“流量精灵”了解一下,不用不知道,一用确实是个好东西。
这两款软件的原理都一样,估计其它的也差不多吧,就是利用网络互访原理,利用网络节点地域差异性,用户随机性,使访问效果真实有效,也就是你的电脑挂着一个刷流量的软件的时候,你的地址会被也在挂机的所有用户访问,当然人家帮你刷的同时你也在帮人家刷,这一切功夫软件都在背后帮你完成,挂上几分钟马上就能看到流量慢慢上来,说了不少废话,下面也说说对策。
应对方案
鉴于部分网友不喜欢看全文就下断论的情况,这里强调一下,所有提交的后台的数据都有做IP检查的,而本文讨论的就是基于这种情况下被刷IP的应对方案。
方案一:通过Ajax异步提交数据(无效)
起初推广地址被点击时在后台解析页面是会先记录访客的IP、时间等信息,这种方式显然很难防不了刷流量软件,因此便考虑通过Ajax异步提交数据的形式。
刚开始还是低估这些流氓软件,以为只是通过简单的模拟http请求不会触发js脚本,所以第一种方案是通过页面加载完成后,通过ajax异步提交记录请求,结果无效,实验证明此方式仅对比较低级的机器人有效;
方案二:判断请求的客户端浏览器窗口宽度或高度(无效)
通过方案一可推测这些流量软件不是单纯的模拟http请求, 也就是通过真实的浏览器请求的,但我挂机“被”帮别人刷流量的同时,并未看到任何网页的打开,只能通过抓包工具看到不停的请求,那我猜想这些刷流量软件是不是隐藏了一个浏览器窗口,或者将浏览器窗口设置得很小很小……对此猜想我通过js判断客户端当前打开的浏览器窗口区域是否大于某个值(如宽300px,高200px,相信没什么人会用这么小的区域看网站吧~),超过一个下限值才通过Ajax提交数据。
结果还是无效,对此也特意写了小程序记录每一个请求的浏览器类型、窗口大小……,结果令我无语,请求的浏览器可视区域都很正常,甚至分辨率很多比我的显示器还高,自我鄙视ing……
方案三: 通过鼠标事件作为正常访问的依据 (有效)
通过几番试验,得出的结论是这些机器人并不简单,但毕竟是机器人,那就考虑通过鼠标事件判断是否机器人,如mousemove、mousedown、mouseover等,当然也可以通过让用户选择点击按钮等认为操作作判断依据(当然要考虑操作体验好不好),下面放个简单脚本:
总结:
经过多番尝试,最终在第三种方案取得成效,但也不排除日后这些机器人的不断改进而攻破这个简单检验环节,毕竟道高一尺魔高一丈。但机器人毕竟是机器人,不妨多增加点人为操作的条件因素作判断,估计还是能防止这类刷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流量软件影响统计的。可能由于项目的特殊性,这些方案并不一定适合所有的情形,毕竟这些刷流量软件大多都是些草根站长使用并且通常都是刷自己的网站的:),这里也希望院子里的网友也提提好的建议,如何应对这些刷流量软件,分享下经验。
相关文章推荐
- jquery中防刷IP流量软件影响统计的一点对策
- 统计下载日志流量,ip等各项信息的shell脚本代码
- Linux下“网站流量访问统计”软件“awstats”的配置安装使用过程
- 使用MapReduce计算框架统计CDN日志IP数、流量等数据
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 简记:分析路由器流量ip统计页面
- 关于javaweb流量统计软件的分
- 几款网站流量统计软件对比分析
- 百度流量统计将会影响搜索的排名
- 影响流量和收入:多家软件站封杀搜狗浏览器
- 网站流量的统计中的IP、PV、UV
- 转贴:流量统计监控软件ntop安装
- Python实现获取nginx服务器ip及流量统计信息功能示例
- 网站流量统计,java+jsp 获取访客浏览器,真实ip,操作系统,来源
- 转贴:流量统计监控软件ntop安装
- 流量统计是否影响网站速度
- 自己制作的网络流量显示与统计软件
- 几大知名流量统计网站的统计脚本中相继植入广告代码的现象,严重影响上网体验
- 使用IPTABLES实现对特定IP,端口流量的精确统计
- 使用IPTABLES实现对特定IP, 3ff8 端口流量的精确统计