拉票这种事情,又烦人,主要还显得lowB。当有技术在手,何不另辟蹊径?
最近遇到了需要在公众号下面帮人刷评论赞的需求,在完全懵逼的情况下开启了初步探索。最终的结果是可以远程操控他人的微信账号对任意目标进行投票。想要刷成千上万的……估计还欠点火候,纯属娱乐,不要较真。
STEP.1 突破微信浏览器的封锁以观察点赞机制
无论你是微信移动端,PC端还是web端,你都会面临一个问题:许多微信网页并不能在微信内置浏览器以外的环境使用,打开的话,会没有完整信息,尤其是“评论区”将不显示。如果设法获得了 真·URL(将网页从移动端发送给PC端,再复制进地址栏) ,恭喜你,你就会面对这个页面:
尝试一:浏览器伪造
我下载了一个user-agent-switcher把火狐的USER_AGENT换成了微信内核浏览器的,然并卵。这个措施只能解决网页禁止访问的问题,但是对内容阉割(无评论区),毫无作用。
尝试二:代理抓包
使用抓包工具Fiddler,设置好connections中的 allow remote computer to connect。手机电脑处于局域网,手机把电脑的IP挂成代理。手机访问目标网页,电脑端的Fiddler即可顺利抓包。
STEP.2 分析点赞的请求机制
猜想一:请求可以无限发送,仅依赖于前端JS(改变Button状态)来限制点赞。账号进入后端就是个字符串,不会查重。
突破方式:截获请求,重复发送。或者拆分ID,造成注入。
实验及结果:在重复发送截获的点赞请求数次后,赞量仅+1。推翻了JS限制的错误思路,验证想必是在后端进行的。
猜想二:猜想其后端处理比较随意,会把OpenID或者UIN之类的“匿名”用逗号隔开以存储。那我只要把相应的ID分成多个逗号隔开的串,即可实现一次多投。
实验及结果:在观察包内信息后,猜测不可取。分隔ID的方式未测试,留给后人。
猜想三:单关键字验证(只需要验证所有字段中的某一个,如果符合要求且未赞过,则可以成功点赞)
实验及结果:使用两个移动设备,在同一文章下对某评论反复点赞和取消,以获取请求信息。
黄色两个包分别是设备一进行点赞和取消的包,绿色为设备2.经过观察发现:同一设备的不同操作,有且仅有like的值不同,其中取消点赞为0,反之为1(更改为其他值与1等效)。
action:字面意思
scene:觉得没用,没试,留给各位
like:布尔,象征赞或者取消
——biz:为公众号唯一标识
appmsgid到content_id:这三项分别是文章,作者,评论编号之类的
uin和key:和事件有关,不需要改
pass_ticket:一个有时效的token,大约可以用一天,不分账号
wxtoken:名字吓人其实毫无用处,可以随意修改(未深入测试,似乎不影响点赞成功与否及用户识别)
appmsg_token:每次打开页面似乎都会生成的一个token,失效很快,十分关键
其他:均为设备信息及浏览器是否为X5内核(猜测这就是浏览器封锁的手段),无明显用处。
另外,还有两个设备的header信息:
由于移动设备、客户端版本号均不同,所以根据人类基本智商,只关注两者共有部分。
基于基本英语水平,排出lang,devicetype等意义显著的无用项目不讨论。
client:客户端信息,一整个部分都与我们目的无关
Miscellaneus:设备信息,包括机号之类的,羊毛党们的福音
transport:无用
在Cookies项目中,两者差异显著,给我们省了不少事:
rewardsn,wxtoken:看似极其重要的两个字串,修改后均无明显功能,交替使用后也不影响任何功能
wxtokenkey和pass_ticket:两个看似是准入凭证的字符串,修改后无法使用功能,交替使用后不影响任何功能
wap_sid2:对,一个超级长的字符串,无论是修改还是换用,都会导致伪造操作无效。
结论就是,没有任何一个字符串可以单独决定点赞后的功能,有一些改了之后将直接失效,其他的改了之后什么影响都没有……
猜想四:多字符串共同验证
实验及结论:疯狂修改调试后,得出以下结论,我弄清楚了基本机制:
当header中的wap_sid2和表中的appmsg_token成对出现的时候,即可验证用户身份以及进行点赞或取消。再其他所有数据都进行符合格式的修改的情况下,这个结论依然成立。
STEP.3 收获成果及应用
弄清楚了验证的机制:应该是在打开公号时,生成一个时效性的appmsg_token,点赞操作时,作为token使用,以获得进入权。接下来,使用很长的wap_sid2,进行身份验证。出于安全考虑,两者需要成对出现。
不足:后期较为疲惫,对于一些小的字段没有很耐心的修改,当时操作界面也乱得不行了。所以注定还有没有发现的机制。
应用:可以看得出来,微信的安全机制十分到位,但也并非毫无破绽。如果公号主设置一篇文章以及一个小的抓包脚本,用户只需要点一下文章,就可以自愿交出这两条信息。公号主许以一定金额的酬劳,对于爱占便宜的用户这简直是免费馅饼。之后公号主再用这些信息从事刷赞,在小脚本的帮助下,几乎可以做到秒刷千万赞。当然,文章阅读量同理。用户轻松赚小钱,公号主盆满钵满,刷量者心愿满足。
总结:微信还应当设法避免这个,建议如限制非关注号点赞及异常点赞后冻结。