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

遭遇刷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流量软件影响统计的。可能由于项目的特殊性,这些方案并不一定适合所有的情形,毕竟这些刷流量软件大多都是些草根站长使用并且通常都是刷自己的网站的:),这里也希望院子里的网友也提提好的建议,如何应对这些刷流量软件,分享下经验。

(0)

相关推荐

  • jQuery圆形统计图开发实例

    本文实例讲述了jQuery圆形统计图开发的方法.分享给大家供大家参考.具体分析如下: 这里我们要给大家介绍一款圆形统计图circliful,它基于HTML5的画布和jQuery,无需使用图像轻松实现圆形统计图,而且有很多属性设置,使用起来非常方便.效果图如下: 首先我们需要将jquery库文件和jquery.circliful.min.js引入到页面中. 复制代码 代码如下: <script src="js/jquery-1.10.2.min.js"></script

  • jquery实现动静态条形统计图

    下图为jquery实现静态条形统计图,在选择题统计中用的比较多. 思路:前台JS实现动态数据效果,后台可以拼接字符串或者用JSON加载数据 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="tiao.aspx.cs" Inherits="qiantaoflash.tiao" %> <!DOCTYPE html PUBLIC "

  • 统计jQuery中各字符串出现次数的工具

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • php和jquery实现地图区域数据统计展示数据示例

    HTML 首先在head部分载入raphael.js库文件和chinamapPath.js路径信息文件,本文不重复写下,唯一不同的地方是需要在body中加一个div#tip,用来展示地图信息的提示框. 复制代码 代码如下: <div id="map"></div> <div id="tip"></div> jQuery 通过调用raphael绘制出中国地图,然后载入统计数据,由于地图区块小,我们不在地图载入的时候就将数

  • jquery统计输入文字的个数并对其进行判断

    1.js代码部分 复制代码 代码如下: <script type="text/javascript"> $(function() { function albumName() { var text = $("#album_name").val(); var counter = text.length; $("#numtj var").text(counter); $(document).keyup(function() { var t

  • 基于jQuery实现表格数据的动态添加与统计的代码

                                                              图(1.1)    某物流信息系统中的功能要求如图1.1所示,表格中每一行代表一笔运送货物的信息,在录入每行的计费重量和费率后,要求能按一定的公式,自动计算运送费用,并且能自动统计所有运送货物的总运费.运送货物信息的数据量(即表格的行数)不定,要求能动态增加.删除,即表格的数据行数是动态可维护的.同时为了方便操作,需要在页面中能像使用键盘的上下左右方向键,在录入的文本框之间进行切换

  • Jquery AJAX 用于计算点击率(统计)

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> Demo </TITLE> </HEAD> <BODY> <script src="jquery.js" type="text/javascript"></

  • jquery统计用户选中的复选框的个数

    复制代码 代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>jquery test</title> <script src="jquery-1.11.1.min.js"></script> </head> <body> <input type="che

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

    遭遇刷IP.刷流量软件的困扰 本以为有效控制同一天对同一个IP仅算一次的方案就能有效防止用户多次刷新地址作弊的现象,我得承认涉世未深孤陋寡闻 - -,一直忽视现在的刷流量软件如此的强大,我们的项目也遭遇使用刷流量软件的情况,因而产生不少垃圾数据,甚至影响统计的准确性. 为解决这种情况也特意下载了两款知名度比较高的刷流量软件"流量宝"和"流量精灵"了解一下,不用不知道,一用确实是个好东西. 这两款软件的原理都一样,估计其它的也差不多吧,就是利用网络互访原理,利用网络节

  • php获取用户真实IP和防刷机制的实例代码

    一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } if (getenv('HTTP_X_REAL_IP')) { $ip = getenv('HTTP_X_REAL_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FO

  • SpringBoot+Redis+Lua防止IP重复防刷攻击的方法

    黑客或者一些恶意的用户为了攻击你的网站或者APP.通过肉机并发或者死循环请求你的接口.从而导致系统出现宕机. 针对新增数据的接口,会出现大量的重复数据,甚至垃圾数据会将你的数据库和CPU或者内存磁盘耗尽,直到数据库撑爆为止. 针对查询的接口.黑客一般是重点攻击慢查询,比如一个SQL是2S.只要黑客一致攻击,就必然造成系统被拖垮,数据库查询全都被阻塞,连接一直得不到释放造成数据库无法访问. 具体要实现和达到的效果是: 需求:在10秒内,同一IP 127.0.0.1 地址只允许访问30次. 最终达到

  • IOS开发中如何设计短信验证码防刷机制

    最近遇到一个关于防止短信验证码被刷的产品设计问题,后来在面试一个前来应聘JAVA开发的程序员的时候,他也提到了他以前公司的系统也遭遇过这个被刷短信的问题.因此,就"如何设计短信验证码防刷机制"作一个总结和分享. 1.时间限制:60秒后才能再次发送 从发送验证码开始,前端(客户端)会进行一个60秒的倒数,在这一分钟之内,用户是无法提交多次发送信息的请求的.这种方法虽然使用得比较普遍,但是却不是非常有用,技术稍微好点的人完全可以绕过这个限制,直接发送短信验证码. 2.手机号限制:同一个手机

  • SpringBoot项目中接口防刷的完整代码

    一.自定义注解 import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * @author Yang * @version 1.0 * @date 2021/2/22

  • Springboot使用redis进行api防刷限流过程详解

    这篇文章主要介绍了Springboot使用redis进行api防刷限流过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 api限流的场景 限流的需求出现在许多常见的场景中 秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动 某api被各式各样系统广泛调用,严重消耗网络.内存等资源,需要合理限流 淘宝获取ip所在城市接口.微信公众号识别微信用户等开发接口,免费提供给用户时需要限流,更具有实时性和准确性的接口需要付费. api限流实

  • jQuery中的编程范式详解

    本文详细分析了jQuery中的编程范式.分享给大家供大家参考.具体如下: 浏览器前端编程的面貌自2005年以来已经发生了深刻的变化,这并不简单的意味着出现了大量功能丰富的基础库,使得我们可以更加方便的编写业务代码,更重要的是我们看待前端技术的观念发生了重大转变,明确意识到了如何以前端特有的方式释放程序员的生产力.这里将结合jQuery源码的实现原理,对javascript中涌现出的编程范式和常用技巧作一简单介绍.   1. AJAX: 状态驻留,异步更新 首先来看一点历史. A. 1995年Ne

  • 基于Redis zSet实现滑动窗口对短信进行防刷限流的问题

    前言 主要针对目前线上短信被脚本恶意盗刷的情况,用Redis实现滑动窗口限流 public void checkCurrentWindowValue(String telNum) { String windowKey = CommonConstant.getNnSmsWindowKey(telNum); //获取当前时间戳 long currentTime = System.currentTimeMillis(); //1小时,默认只能发5次,参数smsWindowMax做成可配置项,配置到Na

  • jQuery中extend函数简单用法示例

    本文实例讲述了jQuery中extend函数简单用法.分享给大家供大家参考,具体如下: var result=$.extend({},item,item1); extend给对象添加新的属性:js插件经常使用来配置参数 {}:item和item1合并后的结果 item:默认属性 item1:新增属性,如果item1和item属性重合则会覆盖item1中的属性 <span id="Test"></span> var item={"name":&

  • 从零开始学习jQuery (四) jQuery中操作元素的属性与样式

    一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得大家学习. 二.前言 通过前面几章我们已经能够完全控制jQuery包装集了, 无论是通过选择器选取对象, 或者从包装集中删除,过滤元素. 本章将讲解如何使用jQuery获取和修改元素属性和样式. 三. 区分DOM属性和元素属性 一个img标签: <img src="images/image.1.jpg" id="hibiscus" alt="

随机推荐