• 【央广时评】发奋图强 倾全力建设海洋强国 2019-06-18
  • 持久战是真打,因为会有清单被逐步落实。美国与中国一样不希望两败俱伤的真打,现在还是叫板中,以增加今后谈判筹码。由于我顺差太大,打不多久就没得打了。所以要来个速决 2019-06-09
  • 女教师课上画高树讲高数 学生原来高数真是树! 2019-06-09
  • 绘就美丽西藏壮美画卷 2019-06-09
  • 《脱身》热播 陈坤和万茜都交出合格的演技 2019-06-09
  • 吕梁:临县一女子车辆被贴罚单后网上辱骂交警被查处 2019-06-08
  • 兰台说史曾经浙江人才是全国最能打的 你能想象吗 2019-06-08
  • 共产主义的终极目标就是消灭剥削,而消灭剥削,首先从主要生产资料公有化开始。资本私有制是同共产主义背道而驰的。 2019-06-08
  • 央视解读不动产登记体系全面运行 房价会下跌 2019-06-08
  • 全国政协十三届一次会议闭幕 2019-06-07
  • 重庆私藏的绝美古镇 悠闲不打挤 2019-06-07
  • 战风雪,海淀在行动! 2019-06-06
  • 今年工资咋涨?多地发布2018年企业工资指导线 2019-06-06
  • 便血只能想到痔疮?不同症状或可代表不同疾病 2019-06-06
  • 你所说的时候正是四两酒半仙处于姑娘的时候。四两酒半仙说,她俩当年一人一餐饭就要吃一斤半米,你说这亩产够四两酒半仙一年吃吗??[微笑] 2019-06-05
  • 当前您在:主页 > 微信投票刷票器 >
    2017最新关于防止微信投票刷票行为的一些办法
    分类:微信投票刷票器 热度: ℃

    微信投票在这几年一直很热门,只要是个活动往往都做一个投票的功能。刷票已形成了一个庞大的产业链但如何防止刷票行为就很让人头疼了。首先要清楚微信的刷票行为,微信投票是根据openid来判断一个用户是否已投过票。

    openid是加密后的微信号,每个用户对每个公众号的openid是唯一的。

    这个判断依据有较大的漏洞,就是只能判断openid是否重复,但无法校验openid是不是真实的。而且就算openid是真实的,刷票软件也有批量的正确openid。刷票软件就是通过使用HttpClient等类似客户端发包,把openid和投票信息post至服务器。由于刷票软件动态伪装ip,拥有大量openid,很容易就在没有完善防刷的应用投大量的票。


    047平码三中三: 几种防止刷票的方法


    1、只有关注了公众号才能投票


    平码有几种买法 www.fkfou.tw 在服务调用获取用户基础信息的API

    https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    • 1

    access_token是全局调用凭证

    接口会返回以下数据

    {
        "subscribe": 1,        // 1为关注  0为未关注
        "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
        "nickname": "Band", 
        "sex": 1, 
        "language": "zh_CN", 
        "city": "广州", 
        "province": "广东", 
        "country": "中国", 
        "headimgurl": , 
       "subscribe_time": 1382694957,
       "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
       "remark": "",
       "groupid": 0
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    当用户投票且未关注时,我们可根据subscribe是0还是1判断有没有关注,若没有关注则转至公众号的二维码页面并提示用户先长按二维码关注公众号。此方法的缺点就是每次投票都要与微信服务器进行交互。


    2、判断refer和User-Agent


    以下为一个request header的部分参数示例:

    Host:
    localhost:8080
    Origin:
    http://localhost:8080
    Pragma:
    no-cache
    Referer:
    http://www.example.com/vote.jsp
    User-Agent:
    Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) 
    Mobile/13A452 MicroMessenger/6.2.3 NetType/WIFI Language/zh_CN
    X-Requested-With:
    XMLHttpRequest
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Referer为上一个访问的页面,所以refer必须要为投票的页面地址。  User-Agent里面必须有关键词MicroMessenger


    3、限制客户端投票次数


        用ip当成同一个ip投票次数受限制,由于很多时候使用nginx或apache之类的代理服务器,因此直接使用HttpServletRequest的getRemoteAddr()很多时候取得的是代理服务器的ip,而我们要取得的是真实的ip址。
    
    • 1
    • 2

    下面是一个获取真实ip的示例代码

     public String getIpAddr() {
            String ip = request.getHeader("x-forwarded-for");
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("CLIENTIP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
            return ip;
        }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    很多刷票软件都使用ip代理池,所以ip限制只能一部分刷票行为。


    4、当投票量大于阅读量时就是刷票行为


    存储页面阅读量,投票完成后,计算票数若投票量大于阅读量时就是刷票行为。


    5、在提交表单数据的地方使用校验码


    服务端返回一个校验码,在dom初始化的时候页面使用js加密这个校验码,commit的时候提交这个加密的校验码,服务端再判断这个加密码的校验码是否正确。校验码设置使用N次后就作废。  以下为伪代码:

    • jsp页面
    <%=request.setAttribute("_check_code_", UUID.randomUUID())%>;
    var _check_code_salt_  = "gx=**&^%%$$###@#$---eeax221";
    $(function(){
        var _check_code = '<%=request.getAttribute("_check_code_")%>';
    });
    $.ajax({
        url: "//www.example.com/vote.do",
        params: { checkCode:  md5(_check_code + _check_code_salt_ ), openid: OPENID },
        type:"post",
        success:function() {
    
        }
    });
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 服务端处理
    String checkCodeSalt = "gx=**&^%%$$###@#$---eeax221";
    String serverCode = MD5.get((String) request.getAttribute("_check_code_") + checkCodeSalt);
    String pageCode = (String) request.getAttribute("checkCode");
    if (serverCode.equals(pageCode)) {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json; charset=utf-8");
        PrintWriter out = null;
        out = response.getWriter();
        out.append("{errorCode:'1'}");
        return;
    } else {
        doSomething();
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注:加一个加密的过程是为了让使用HttpClient的模拟访问行为变的更困难


    以上的方法可结合项目的实际情况组合使用,五项组合起来使用基本上能杜绝大部分的刷票行为。

    上一篇:写爬微信投票结果遇到的正则该怎么办呢 下一篇:手把手教你微信投票刷票的方法
    猜你喜欢
    各种观点
    热门排行
    精彩图文
  • 【央广时评】发奋图强 倾全力建设海洋强国 2019-06-18
  • 持久战是真打,因为会有清单被逐步落实。美国与中国一样不希望两败俱伤的真打,现在还是叫板中,以增加今后谈判筹码。由于我顺差太大,打不多久就没得打了。所以要来个速决 2019-06-09
  • 女教师课上画高树讲高数 学生原来高数真是树! 2019-06-09
  • 绘就美丽西藏壮美画卷 2019-06-09
  • 《脱身》热播 陈坤和万茜都交出合格的演技 2019-06-09
  • 吕梁:临县一女子车辆被贴罚单后网上辱骂交警被查处 2019-06-08
  • 兰台说史曾经浙江人才是全国最能打的 你能想象吗 2019-06-08
  • 共产主义的终极目标就是消灭剥削,而消灭剥削,首先从主要生产资料公有化开始。资本私有制是同共产主义背道而驰的。 2019-06-08
  • 央视解读不动产登记体系全面运行 房价会下跌 2019-06-08
  • 全国政协十三届一次会议闭幕 2019-06-07
  • 重庆私藏的绝美古镇 悠闲不打挤 2019-06-07
  • 战风雪,海淀在行动! 2019-06-06
  • 今年工资咋涨?多地发布2018年企业工资指导线 2019-06-06
  • 便血只能想到痔疮?不同症状或可代表不同疾病 2019-06-06
  • 你所说的时候正是四两酒半仙处于姑娘的时候。四两酒半仙说,她俩当年一人一餐饭就要吃一斤半米,你说这亩产够四两酒半仙一年吃吗??[微笑] 2019-06-05
  • ac米兰v萨索洛 博洛尼亚大学申请基本要求 剑网3 万花 迪尼斯乐园 维戈塞尔塔客场球衣 广东快乐十分走势图今天号码 锁子甲制作方法 比利亚雷亚尔2019阵容 利物浦空气净化器原理 云达不莱梅VS莱比锡