先上结论:

  1. 进入投票页面的时候如果看到有页面跳转、重定向、或是微信授权,那多半是投票服务后端需要验证微信用户的openid,以实现一人一次投票,这样的投票几乎没有办法破解,因为你是在以一己之力对抗腾讯庞大的技术军团 - -!。
  2. 如果投票页面可以在浏览器上打开,并且不需要做登陆之类的验证操作,那基本上是可以破解的,不过这么不负责这么low的投票系统不是程序猿偷懒就是花不起钱请个好点的程序猿要不然就是这个投票不重要,人家只想要流量,醉翁之意不在酒。

这次尝试破解的投票链接:http://toupiao.bssz023.com/ApiIndex/WxIndex

  1. 下载并打开抓包软件Wireshark,用数据线连上iphone和mac,侦听iphone的网络传输,具体教程参见 https://zhuanlan.zhihu.com/p/23823231
  2. ping一下域名toupiao.bssz023.com,得到其ip地址,在wireshark上添加过滤器,之后在手机上进行一次正常的投票,现在我们在wireshark上就能看到这次投票过程中和投票服务器产生了哪些网络交互,如下图所示
  3. 仔细分析这些http请求
    1. /Show/MemberInfo是投票候选人列表页,请求之后被302 Found重定向访问/ApiIndex/WxIndex
    2. 请求/ApiIndex/WxIndex后被重定向访问https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx69e1809168b77828&redirect_uri=http://toupiao.bssz023.com/ApiIndex/WxCodeGet&response_type=code&scope=snsapi_base&state=STATE&component_appid=wx8ae4a66bb39e8fe3#wechat_redirect
    3. 微信浏览器解析到open.weixin.qq.com时进行加密验证
    4. 验证通过后带上code访问/ApiIndex/WxCodeGet?code=00156pc01FY5D12556e01LCxc0156pcI&state=STATE&appid=wx69e1809168b77828
    5. 投票服务端接入微信open平台验证该code
    6. 验证通过后获取到用户openid,生成一次session
    7. 返回sessionid,并重定向至投票页面,此时微信浏览器上显示了投票候选人列表
  4. 当我们选择某个投票候选人,点击投票后,js脚本就生成一次ajax请求。/Show/TouPiaoAjax即是本次ajax请求的uri

用python模拟一下ajax请求, 当然返回的结果是请明天再来投票。

#!/usr/bin/python
# coding=utf-8 import urllib
import httplibdef post(host, uri, header, data): data=urllib.urlencode(data)conn=httplib.HTTPConnection(host)conn.request('POST', uri, data, header)res=conn.getresponse()print(res.status)print(res.msg)print(res.read())def main(): host = 'toupiao.bssz023.com'uri = '/Show/TouPiaoAjax'header = {'Host': 'toupiao.bssz023.com','Accept': '*/*','X-Requested-With': 'XMLHttpRequest','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-cn','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Origin': 'http://toupiao.bssz023.com','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.5.2 NetType/WIFI Language/zh_CN','Referer': 'http://toupiao.bssz023.com/Show/MemberInfo?mid=71&acid=1&from=singlemessage&isappinstalled=0&from=timeline&isappinstalled=0&from=timeline&isappinstalled=0','Cookie': 'ASP.NET_SessionId=0edddiocwbiyupku3ikwrowi'}# Cookie: ASP.NET_SessionId=0edddiocwbiyupku3ikwrowi\r\ndata = {'mid':'71', 'acid':'1'} post(host, uri, header, data) if __name__ == '__main__': main() 

本次破解的失败在于微信浏览器请求https://open.weixin.qq.com/connect/oauth2/authorize时进行了加密验证,验证通过后返回一个code,这个code是没办法模拟出来的。投票服务端拿到这个code后也会到open.weixin.qq.com进行验证得到微信用户的openid,实现一人一次投票这样就没办法作弊了。

转载于:https://my.oschina.net/u/3121930/blog/828827

一次微信朋友圈投票破解的尝试相关推荐

  1. 微信投票html,飞速微信投票微信朋友圈投票程序

    本投票活动主要为大家提供娱乐有趣的活动,增加生活情调,享受生活美好,不会存在任何欺骗.,本平台也不会以任何中奖名义要求转账或者其他欺骗行为. 全网最便宜的投票方式.微信群里有投手有任务的,他们发布任务 ...

  2. 班旗怎么用软件设计,微信朋友圈投票软件[必看]如何制作

    随着微信朋友圈投票活动的增多,每个人都在微信上投票.如果你经常在朋友圈中进行游说,就会引起每个人的不满.如何交朋友圈投票软件 [必看] 大师分享一个完整的体验 朋友圈投票软件制作过程适合所有人. 微信 ...

  3. 微信朋友圈投票活动的“刷票”案例分析。

    https://github.com/debugtalk/VoteRobot 现阶段,在微信朋友圈举办的投票活动层出不穷,相信已经有不少同学对此不胜其烦,因为总会时不时地冒出个人(亲戚.朋友.or w ...

  4. 推荐|微信朋友圈营销的新尝试

    作者:孙志超 全文共 3066 字 4 图,阅读需要 10 分钟 ---- / BEGIN / ---- 微信是一个原则性特别强的工具--尊重用户的选择,不对用户的任何选择画蛇添足.指手画脚.而< ...

  5. 微信朋友圈投票刷票脚本实现分析

    该代码已不适用,不再维护,仅供大家学习参考 WeiXinVote 最近看到发的一个微信拉票,闲来无事研究了一下,发现这个活动是可以刷票的,简要的记录一下刷票脚本的过程.实际上,这种爬虫代码的实现永远都 ...

  6. 微信朋友圈这样招生,才不会被屏蔽!(附实操案例)

    如何招生,长久以来是众多校长的心病.人力成本的不断上升,让地推逐渐失去了吸引力,而网络营销的费用也是水涨船高.那么是否有更好的招生途径呢?毫无疑问,通过朋友圈招生已经逐渐成为很多校长的新选择.那么,到 ...

  7. 【代码】第11章 APP的爬取,appium打开微信朋友圈

    11.1 Charles的使用 电脑win10安装Charles,安装受信任的证书: 替换安装目录的charles.jar,得到破解版: 为解决乱码问题,网上一些做法: 将SSL代理设置里add,Ho ...

  8. 七招搞定微信朋友圈营销

    微信营销,用简单的一句话来说,就是为粉丝和用户分享他们可能会想要的东西,从,某种角度来讲也算是用户体验的一种,不信,你看看下面的朋友圈营销方法,哪个不是从用户和粉丝角度出发的. 从微信本身的特点来看, ...

  9. 微信朋友圈广告怎么代理,19年最新政策是什么?

    --------------目录------------ PART1:微信朋友圈投放优势 PART2:朋友圈广告展现形式 PART3:朋友圈广告收费策略 PART4:朋友圈广告赠送曝光 PART5:如 ...

最新文章

  1. jquery 移除border_jQuery - 删除元素
  2. 用python写脚本看什么书-终于知晓python编写脚本入门教程
  3. 使用KNN对MNIST数据集进行实验
  4. python3 : remove,pop和del方法的区别
  5. 计算机网络人民邮电出版社答案,计算机网络基础 人民邮电 龚娟 第4章习题答案...
  6. c++ 结构体初始化_【干货】c语言基础语法——结构体
  7. html自动执行的事件,js自执行事件
  8. Nodejs中的模块系统
  9. mysql 触发器 for each row 理解_MySQL触发器中的“ FOR EACH ROW”如何工作?
  10. (转载)C#提取汉字拼音首字母的方法
  11. 剑指 Offer II 006. 排序数组中两个数字之和
  12. 开源及第三方软件管理体系
  13. 在网页HTML中嵌入QQ、MSN、旺旺、Gtalk快速对话框代码
  14. PCB的paste与solder层
  15. 提交网址到bing搜索引擎
  16. EDGE网络已落户嘉兴
  17. Matlab yalmip 符号变量syms和sdpvar的替换
  18. vue2.x进阶知识点总结
  19. 2020年3大免费又好用的BI工具软件
  20. overload override

热门文章

  1. WACV 2021 论文大盘点-人体动作检测与识别篇
  2. 船桨数学模型matlab,船用螺旋桨负载特性数字仿真
  3. 76、基于STM32的电动车小车蓄电池/锂电池充电桩系统设计
  4. BAT54A 肖特基二极管:引脚配置及其应用特点
  5. 徐州初中计算机学校排名2015,2018年徐州初中学校排名,徐州重点初中排名详细榜单...
  6. 微网站分享微信朋友圈和分享给朋友图标显示问题
  7. iOS 特种label:镂空文字、类歌词进度显示文字
  8. HTTP与HTTPS知识点
  9. scrapy爬取起点中文网24小时热销榜单
  10. 产品群面:在无领导小组讨论中脱颖而出!