微信投票是怎样投票的,微信投票功能
其实给第一次微信投票作序并不难。最近之前有客户来找我,说在参加行业内的一个投票活动,现在排名靠后了。希望能帮他们提供一些技术支持。我看了一下,顶尖选手肯定采取了一些措施。既然他们这个行业不涉及技术部门的程序员之类的,我猜他们可能花钱开了“挂”,那我也开“挂”吧。
基本有三步:一、自己手机体验一手投票的乐趣。二、看源码分析一手投票的乐趣 。三、抓包清楚流程后,写脚本跑一手投票的乐趣。。
我们开始吧.
一、体验自己手动投票的乐趣。先看投票流程,完全按照它正常的投票流程走一遍。看看投票过程和注意事项,在小本子上记下以下内容:
1.投票页面只能用微信浏览器打开,其他浏览器打开后没有投票按钮。那很好。猜测是检测头的内容,我们可能要模拟登录。
2.投票时需要输入图片号验证码。一般第一种猜测是后台或前端生成有一定规律的随机数,调用外部接口生成图片。第二种猜测是直接调用外部接口生成图片,同时返回数字。没错。至于怎么回事,我有个想法。
3.投票成功后,30分钟后才能再次投票。前端肯定有定时任务,后端有没有写定时限制就不清楚了。如果后端没有写时限,那就太好了。我们可以简单的跳过前端的限时,但是我的预感告诉我我在想放屁,后来也证实了我在想放屁,后端肯定是有限制的。唉,作为一个公司的盈利产品不可能这么严谨。
第二,看源代码分析。了解了一手投票的乐趣后,还需要“深入”到具体细节中去。最简单的方法就是把前端代码弄下来,研究一下,发泄一下。具体方法,我的另一篇文章有一个办法,可以在本地获取微信页面或者小程序代码(里面的反编译包好像是无效的,有需要可以私信我)。回归主题。很好,很对,看!哼,别误会。
先看逻辑,最好把投票相关的逻辑都过一遍。如果不知道从何入手,那就太难理解了。可以先从按钮推功能,再从界面推回来。毕竟我们不是在二次开发,不需要了解官方介绍之类的东西。我个人喜欢这样做,这样“更快”。随着身体的颤抖,我已经看完了。别问我为什么这么快,直接问。关闭!
通过前端代码,我们可以得到一些我们需要的参数(活动ID,投票者ID等。)
组织逻辑:
1)微信授权登录。
2)获取活动ID
3)点击投票时获取玩家ID。
4)前端生成6位随机整数,请求接口生成图片。
5)请求接口验证验证码(验证码CryptoJS加密)
6)请求投票界面
嗯!大概就是这样。你认为这还没完,是吗?我才刚刚开始!
三。流程清晰后,一手写剧本一手投票的乐趣。为了方便的获取一些接口参数和地址,我使用fiddler抓取包。仅仅半个小时后,我又可以投票了。fiddler配置了移动电话网络,准备好抓取数据包,然后删除一些无用的请求,留下有用的数据,并开始分析:
首先,我最关心的是后端是否对时序进行限制。没有的话,直接颤抖。fiddler有重新执行的功能。直接执行的时候发现错误,但是验证码失败。哦,忘了,先研究一下验证码,通过一个接口发送一个6位随机数,返回一张图片。目前我们会先手动输入,重新执行,报错。你已经投票了。唉,没让我失望。后端做到了。但是我们需要的数据都差不多。通过fiddler可以清楚地看到界面url、参数等信息。
我们开始写python脚本
Ps:(头、cookie、参数(token、id等信息)可从fiddler获取)
1)请求界面模拟手机微信登录。
2)生成一个随机数,请求接口获取验证码图片(因为随机数是我们生成的,可以在本地获取,我们只需要请求接口激活这个随机数,不用看图片是什么样子的)
3)用CryptoJS加密随机数作为参数,请求验证接口传递验证码。
4)准备工作完成后,请求投票界面投票。
5)一个流程运行下来没有问题。剩下的就是写作时机和脉络了,这里就不多说了。
6)、部署到我自己的服务器上,没事的时候就去看看是不是坏了。
结局:因为一些外界的原因(你懂的),我并没有试图突破后台限时投票的问题,所以这样的话,一个微信号一天能得48票,十个号就是480票。只要有足够多的号,客户父亲当时给我提供了20个微信号,一天得了960票,加上一些散票,一天大概1000票。一个月后,活动结束。我以第二名胜出(第一名在我开始之前有五万多票,后续没有我们增长快,但是起点太高,没有足够的时间追上)。不过客户父亲还是很满意,给了很好的奖励。
嗯,就这些。对了,集赞评论可以免费带我走!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。