早上陪同学去驾校报名,跟驾校阿姨含蓄了几句后坐在一边,过了一会她问我,钟声你不是要考科目一吗,你过来帮我点点这几道题,保持活动就行,对准确率没有要求。
这是交警支队安全教育中心的网站,扣满12分的人,要去车管所学习4天,然后在这个网站学习24小时。
她告诉我,经常一些扣12分的学员来找让帮忙,尤其是最近这段路限速40,一不小心就超速50%扣12分,她也不好拒绝,但太麻烦了,如果要学完这24小时,至少要学3天。
既然是这样重复的操作,我就帮他解决吧。简单做了一下分析,并不是必须答题,学习的内容包括:法律法规、标志标线、安全驾驶知识、在线题库、在线视频、模拟考试,这几个栏目都会加载一段记时的js代码,所以点开法律法规下的一篇文章也算学习,每隔五分钟弹出一个对话框,点确定后会才会继续计时。
首先想到网站有没有xss漏洞,如果有,服务器端还没限制的话,可以瞬间满级,但翻了一会发现无从下手。
没有取巧的方法,要踏踏实实模拟点击了,写了一行js在控制台运行:
setInterval(function(){var objs = document.getElementsByClassName("btn btn-info"); objs[0].click();console.log("点击成功,增加五分钟");},30000);
可以点击,但会小概率出现验证码,幸好验证码是简单的4个数字。
解决这个问题可以写一个chrome插件,只需在manifest.json
文件中的permission
中声明即可实现跨域。 然后去github找一个python验证码识别库,封装成接口供background.js调用。
开发中发现了 https://github.com/antimatter15/ocrad.js 这个库,纯js写的ocr识别库,用来识别验证码准确率能到20%,识别率很低,但软件对准确率没要求,关键是让开发更简单了,将js直接注入到页面,content_scripts跟页面共享一个dom,可以直接读取验证码,所以不存在跨域问题。
上淘宝搜索,没有发现代挂服务,也许这是违禁商品被下架了。加了一个当地的驾照收分的qq群,群主说代挂24小时收60块钱,他现在同时给六个人挂着,还告诉我一个小窍门,看学习视频可以25分钟点一次确定。通过搜索引擎知道,满12分处罚各地都不一样,山东是要去车管所学习四天,然后网上学习24小时的。
这个软件是有一定市场需求量的,她也愿意帮我在教练群里做推广。但是考虑到,拿来赚钱,这算是灰产了。如果被大量使用了,可能有人因为少学了3天,造成了一起交通事故。可能因为这个软件,山东省的交通肇事率连年提高,可能让更多家庭支离破碎!所以我放弃了收费商用的想法,同时为了使软件传播可控,又不要麻烦,加入了一行代码让软件六个月后失效。