近期写了一个无聊的程序,帮别人刷票,或许是“胆小”,总怕被主办方发现,在编写中不断的思考,如何躲避检测,其实主办根本不“在乎”,明显的刷票让投票成为笑话。
刷票的特点
刷票有两种,一种是bot程序刷票,一种人肉拉(shua)票,无论那种,本质是资源有限,要么不受控制、要么严格按照程序执行,几乎没有中间地带,也就为检测提供可能
- 投票目标单一、量大
- 投票时间集中
- IP分布不符合人口分布
- 间隔不符合正态分布
- 请求页(xing)面(wei)顺(mo)序(shi)相似
- 请求设备集中
检测
需要记录的数据
- 源IP 或x-forword-for的数据
- 请求时间
- refer
- user-agent
- 投票内容
- 请求的url
- header字段顺序
- 错误的请求
统计分析检测点
- 单个参数是否符合幂律分布
- 筛选投票的top10,检测投票的星期内周期、24小时周期
- 检测IP的TOP10、投票内容TOP10、refer的top10
- 检测IP的分布、设备型号的分布、浏览器的类型和版本分布、时间间隔的分布
- 检测投票时间间隔是否符合指数分布、较长周期是否符合正态分布
- 检测出错类型及频率是否为人为错误(人总会犯错的)
- 引入机器学习模式,检测数据
防范措施
- 增加对行为模式的数据获取,如鼠标、键盘、手势信息等
- 增加请求页面的检测,增加隐藏表单
- 增加对页面停留时间的检测
- 通过html5等获取设备指纹,检测设备运行能力
- 增加提交投票表单的检测值,按照时间不定期进行变换,若过渡期后,提交旧则报警
- 变化投票数据或模式,让投票失效,特定的模式亦可作为报警
- 使用跳转,必要时可生成多次跳转、为bot生成循(la)环(ji)链接
- 随机错误:-)
以上可随机出现,采用打分的方式,可以动态调整敏(fa)感(zhi)度,防止“刷票”人员试探检测模式,部分检测或防范模式也可用于检测爬虫
对于“刷票”行为,通过一种方式可能难以检测,但通过不同的视角,肯定可以发现其中的不正常之处,要让数据多个层面符合特征,这画面太美我不敢看(ps:或许n年后,人工智能发展后,呵呵)
本文遵守知识共享协议:署名-非商业性使用-相同方式共享 (BY-NC-SA 4.0) 协议