最近遇到几个投票,还遇到某个活动有人刷分数。朋友圈也充斥着很多集赞的。所以集合写一下吧。

投票

对于这种的这些,我有一定的道德感,但是也没有那么强,像如何看待阿里巴巴安全部门的月饼事件?我觉得是过了。几年前某银行有少量积分兑换自行车,我曾经用程序去刷过,给自己和别人兑换了一些自行车。也经历了对方修改程序自己赶紧同步修改的惊险过程。其实这种活动,最终拼的都是程序和网速,人是根本抢不到的,可能xiyi除外吧。

而我知道,商业上的这种反爬虫和爬虫已经非常专业化了,可以看看携程的文章:1 干货 那些你不知道的爬虫反爬虫套路 http://www.jianshu.com/p/21f16af25572 2 关于反爬虫,看这一篇就够了

与竞争对手和解之后,我们去拜访对方,大家坐在了一起。之前网上自称妹子的,一个个都是五大三粗的汉子,这让我们相当绝望,在场唯一的一个妹子还是我们自己带过去的(就是上面提到的实习生),感觉套路了这么久,最终还是被对方套路了。

好在,吃的喝的都很好,大家玩的还是比较high的。后续就是和平年代啦,大家不打仗了,反爬虫的逻辑扔在那做个防御,然后就开放白名单允许对方爬取了。群里经常叫的就是:xxx你怎么频率这么高,xxx你为什么这个接口没给我开放,为什么我爬的东西不对我靠你是不是把我封了啊。诸如此类的。

所以有机会做爬虫和反爬虫也是蛮好玩的。

我向来对于投票没有恶意,佛系。投票对于主办方来说可以增加访问量,对于受众来说可以增加信息来源,这个跟广告一样,如果不是你需要的,那就是垃圾信息,如果你正好要买个东西,推荐给你了,那就是优惠信息。只是作为类似阿里行政人员的主办方,记得制定规则前应该去找找靠谱的程序员,从技术上应该知道有些问题存在,IP池和验证码识别都是云服务了,可以非常方便便宜地买到。应当适当减低投票所占的比重或者在页面明确告知不允许程序投票。对于有些关注后才能投票或者注册才能投票那都是耍流氓,首先主办方拿到的关注粉丝价值本身就不高,而且拉票的人也很困扰,当然,如果你拉票群里发个红包也可以了

或者你说主办方根本就不在意是否程序投票,但是这个会影响那些为你人肉拉票的人的积极性,那些人才是你应该关注的,否则万能的淘宝买个投票数也是很容易的。也会让你的营销费用打了水漂,黑产双11双12每天刷优惠领红包据说日入10万。

那怎么靠谱呢?我想说:写一个好的投票系统,要考虑的事情还是蛮多的。那尽量避免一些低级的错误吧。

案例

某个活动

某个活动,前几名都是某个学院,分数很高,主办方怀疑有人用程序刷,找到我,一看,没有任何安全意识,我说:“乱怀疑干嘛,就是有人在刷。”在答题之前有个练习,练习是一页页做的,但是跟服务器没有交互,所以打开页面源代码,题目和答案直接都在源代码里。不过这个题目也不是秘密,初衷是让人学习了消化了然后在规定时间内答题看你对多少题的。答题的时候,规定时间是客户端的时间,查看源代码,答案也直接嵌入。你可以在console写个JavaScript循环直接选上正确的答案,或者修改截止时间,或者PhantomJS、Selenium、urllib2、requests随便写个脚本,也就是你有一百种方法可以1秒满分。某学院没有满分霸榜倒是让我很怀疑这些学生的专业水平了。

某个学习平台

某个学习平台是上级派发下来的任务,领导要求每个人都去做题,并且最后截图给他看,里面需要提交你的身份证,名字,联系方式,于是有人(是我么?)直接修改HTML代码截图过去了。

某个投票

某个投票,我随便试了下,也存在一些问题:

  • 提交没有CSRF验证,导致可以直接提交投票信息,也就是你如果控制一个访问量大的站点,你可以默默地让那些访问者帮你投票。可能需要对方使用IE6吧。不太确认。很久没玩了。
  • 判断IP地址是否已经投过票时错误地处理了 X-Forwarded-For 。这种情况一般是网站在CDN或者负载均衡后面,过分信赖 X-Forwarded-For 字段,所以你可以5分钟写个程序枚举IP地址就可以刷刷刷刷票了。比如
curl "http://xxx/vote.me" -H "Pragma: no-cache" -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "X-Forwarded-For: 1.2.3枚举我把.4" --data "id=1"
  • 没有验证码,导致可以使用IP池(自建 http://kaito-kidd.com/2015/11/02/proxies-service/ 、云服务 ip池)投票。所以你可以半个小时写个程序刷刷刷投票了。

怎么解决

如果有了验证码,还是可以花一个小时写个程序刷刷刷投票。没什么好的预防方法。

你如果有应对,实际上就是告诉对方你的方法,他也可以相应地做调整。 所以还有个方法是,以不变应万变。页面上提示,投票结束会去除非人工投票票数,在投票时收集好足够的数据,根据IP,IP归属地,互联网IP池,免费代理IP,客户端鼠标移动JavaScript,时间点,referer,hacker调试时留下的蛛丝马迹等等所有的信息,在投票过程中不做任何改变,只在最后排查出是机器投票的剔除。

当然你不能去惩罚刷票的人,因为你不知道是否他刷票,有些人调试对着别人调试正式运行时对着自己,或者再给其他人投票搅搅混水呢。

集赞和支付

集赞,举手之劳,有看到我都会点的。然而对于商家来说,这个营销实际上不靠谱,因为集赞是在客户端的,也就是集在客户的手机上,有一个 猥琐 的方法那就是:

由于微信的限制,商家他没法从他那边验证你的集赞数,他可能会拿着你的手机屏幕看下,所以你截图,或者花一天写个程序,H5套个壳,就可以模拟微信的界面,想要集多少赞让谁给你集赞你可以随便搞了。

支付也是一样,对于商家来主动扫描核销你的订单的,这种不行,还有一种是商家给你个二维码,你自己扫码后“支付完给我看一下”的。这个时候你用个假的支付宝或者微信,假装输密码,假装支付成功,又不是不可能。。。奉劝大家,这种一般都是小钱,对方也是小本生意,不建议这么做,但是不知道是不是有人已经这么做了。。。

微信

微信变成一个大平台后,能力越大,责任也越大,前段时间暴露微信支付提示信息被人注入 国庆长假群主疯了!扫码支付1分钱得299元红包!(不要上当) ,我在拷贝这条朋友圈信息的时候一大堆的参数,URL完全不友好,我知道微信他是可以从这些参数里获取这条信息的传播路径的,但是我不知道是否泄漏了我的什么信息。而且微信自带的浏览器是没有地址栏没有HTTPS安全标识符的。公众号整个实际上已经成为暗网了,凶险、罪恶还是自由?暗网到底是什么?。订阅号变成一个功能非常非常非常简陋的RSS阅读器,唯一的好处就是他的SNS传播途径和原创保护了。