微信网页投票的一次分析

微信上的某投票网页,好友考虑是否能刷投票,于是进行了一番分析。

该活动本质上就是微信使用Webview控件打开的一个网页应用。提取出URL,使用chrome打开:
vote

但是点击某个具体的候选人时,却会访问出错。
error

首先想到改UserAgent,试了却也不行。遂截包分析,从微信的访问,请求如下:

微信发送的请求多了一个字段
X-Requested-With: com.tencent.mm
尝试添加该字段进行访问。也不能正常打开投票页面。
   于是跟了一下微信上打开投票页面的全过程。发现在打开指定候选人投票页面之前,页面中间会先跳转到微信的一个oauth2接口,然后再跳转回投票页面。
   这样,流程就是,网页应用通过oauth2协议请求微信账号的授权,如果用微信app打开则已经是登录状态,微信自动授权后跳转回网页应用指定页面,并附带一个授权码。这样就能打开页面了。
    关于OAuth2协议,可以参考我的这篇文章《OAUTH2授权安全问题的一些思考》

测试在桌面浏览器上直接带上授权码去打开页面,也是能成功打开的。
这样的话,投票操作跟微信账号进行了一一对应,投票活动就根据微信账号来进行投票次数的限制,而不是IP地址等信息了。无法通过代理IP地址来进行刷票了。

Join the Conversation

2 Comments

Leave a comment

Your email address will not be published. Required fields are marked *