Ap Blog

Cold code, warm soul.

@Aploium3年前

10/22
23:09
编程 网络

实时监控微信投票的票数

微信刷票是一种破坏公平而令人恼火的行为,更坑爹的是微信后台完全没有办法检测刷票行为(不知道API可不可以,目测也不行)

于是写了一个用来实时监控微信票数的小程序,每隔1分钟抓取微信页面上的票数,帮助抓出刷票的家伙来。

微信投票票数实时监控-实例

图中某组织显然是刷票了


微信投票票数监控 帮室友友情监测投票 显然有人刷票了

帮室友友情监测投票 显然有人刷票了


正常情况下,直接访问微信投票页是看不到各项票数的。

但是如果查看页面的源码,会发现一段有意思的内嵌javascript(截取js第182行,格式化)

var voteInfo = {
    "title" : "社会实践投票",
    "vote_permission" : 2,
    "expire_time" : 1445308800,
    "total_person" : 12131,
    "vote_subject" : [{
            "type" : 1,
            "title" : "快来为你支持的队伍投上一票吧",
            "options" : [{
                    "name" : "S02 梦启湄潭支教团",
                    "cnt" : 1252,
                    "selected" : false
                }, {
                    "name" : "S03 ”蒲公英计划“团队",
                    "cnt" : 1221,
                    "selected" : false
                }, {
                    "name" : "S04 ”藏地密码·探秘之旅“团队",
                    "cnt" : 2897,
                    "selected" : false
                }, {
                    "name" : "S06 启梦支教团队",
                    "cnt" : 487,
                    "selected" : false
                }, {
                    "name" : "S0102 \"水之梦·楠溪行\"团队",
                    "cnt" : 1363,
                    "selected" : false
                }, {
                    "name" : "S0103 蓝田学园赴浙江杭州“京杭大运河水文化”暑期调研实践团队",
                    "cnt" : 831,
                    "selected" : false
                }, {
                    "name" : "S0121 “溯水之源”—浙江水污染调研实践团队",
                    "cnt" : 600,
                    "selected" : false
                }, {
                    "name" : "S0126 “水文化”实践小分队",
                    "cnt" : 446,
                    "selected" : false
                }, {
                    "name" : "X01 蓝田艺术团",
                    "cnt" : 2801,
                    "selected" : false
                }, {
                    "name" : "X18 蓝田学园赴“杭州城市文化社会实践基地”暑期社会实践团队",
                    "cnt" : 233,
                    "selected" : false
                }
            ],
            "total_cnt" : 12131,
            "vote_id" : 2258526
        }
    ],
    "super_vote_id" : 1596252,
    "del_flag" : 0
};

是以json存储的各队伍名称和票数(果然…要相信坐在服务器对面的都足够懒)

于是试着用curl直接GET投票页面,发现没有这个js,应该是用ajax动态加载出来的
对js下XHR断点,发现上面的js是从这个页面加载的。

GET之,成功得到上面的js文件

 

接下来就简单了,根据给定的投票页面,读取里面的票数js地址,每隔一段时间下载它,提取出里面的票数即可。

当然,作图的事情就交给excel了= ̄ω ̄=

我不知道这个规则多久后失效,不过就算失效了,到时候改一下正则就可以了,加载方式应该是不会改变的。


程序用Autohotkey写成,开源(废话),使用说明和相关设置见压缩包内txt

ps:因为需要一直保持运行才能获取连续的数据,所以还是建议有能力的人写个Python丢到服务器上。
2015年11月26日更新: 本程序可以不加修改地正常运行在windows server 2008/2012上 2003理论上可行,未测试

希望能抓出更多的作弊者

下载链接: aploium.com/dwn/WC-VoteMonitor.zip

 

实时监控微信投票的票数

来一发吐槽叭O(∩_∩)O    仅首次吐槽时需要审核