春节回家IT技能必备
摘要关键字:12306、图像识别

 一.抢票       

        常年在外讨生活,春节到了,是时候该回家看看父母孝敬孝敬双亲了。然而,首先一个绕不开的话题就是抢票。

        春运时节一票难求,没有人会傻到手动购票,手动购票毕竟快不过机器,有需求就有市场,所以各种抢票工具八仙过海各逞奇招。抢票工具最重要的技术环节是验证码识别,本来验证码是一个很有意思的话题,值得深入探讨,这里面涉及到图像识别和机器视觉。对付普通验证码,一般流程都是针对图像进行降噪、灰度、二值化、提取连通分量、细化等,同时大量下载验证码作为样本进行训练和学习,识别率能上50%就算很好了。

        几年前我也曾天真的也想要做一个抢票工具,后来我看到了12306的新验证码,于是深深的被其折服了。。。人类视觉尚不能做到准确识别,更别提机器视觉了。对付这种反人类的验证码,应该没有技术识别的可能性,只能人工识别,然后映射和存储识别信息。简单暴力,但是快准狠。12306验证码对应的识别信息其实是鼠标点击的坐标位置信息,后台再计算坐标信息是否落入正确范围。

        验证码云识别模块设计:爬虫模块负责定期抓取图片入库,数据库中保存图片信息、图片哈希值,重复图片不重复入库;打码团队负责将库中图片进行人工识别并进行标记;用户在使用工具的时候,首先根据图片哈希值在库中搜索进行自动识别,如果不能识别则弹出给用户人工识别,用户识别后可以将图片继续入库。如此循环往复,可以建立起一个完善的超高精度验证码识别系统。

        360抢票王(现在好像是第五代了)貌似就这个路子,但使用的时候有5秒的刷新间隔限制。由于浏览器抢票都是在前端进行的,js代码都是直接暴露的,因此容易被破解:

        F12呼出浏览器控制台,找到pc.huochepiao.360.cn/2017xxxxxxxx/index.js,抢票间隔就在这个脚本里面设置的,格式化一下js文件,找到如下代码:

      , z = 1
      , D = 1
      , w = []
      , j = !1
      , v = g.ipAble ? 5e3 : 5100;

        如上,最后一行控制了5秒的抢票间隔,改成任意你想要的值即可。

        然而js和DOM原理不一样,改完后不会立刻生效,改的只是js副本解释引擎不会更新。这个地方比较麻烦,可以用中间工具代理网络请求,刷新页面回应假冒的js骗过浏览器。

        工具有了,但是还有个问题,频繁刷新会被12306踢掉,需要再次登录,影响抢票的连续性。这个也不难解决,在浏览器控制台中写入interval间隔执行代码,定时检查dom元素状态,如果需要登录,自动模拟鼠标动作点击登录即可。

二.修电脑

        回到家后老爸反应笔记本总是卡,气得他经常摔鼠标,得给他清理清理了。一打开电脑,好家伙,360全家桶、qq全家桶、各种电脑管家、爱奇异全家桶、IE装满了插件!有限的电脑被各种流氓软件牢牢霸占,无耻之极!

        一番卸载和清理,再装上火狐浏览器+ublock屏蔽广告,首页设置成老爸常去的新闻网站,世界终于清静了。老爸一番试用,连呼妙极,流畅!


本条目发布于2017-02-07, 共阅读 1338 次, 评论 1 条
属于标签: life
#1楼 匿名访客 2017-02-24 13:24:01
很实用,谢谢博主。
1 条评论,说点什么吧