前几朋友叫帮忙买火车票,现在的火车票大家也知道,不是一般的难买,热门路线想直接通过12306官网买到票,估计跟买到彩票的概率差不多,
所以直接用抢票软件,刚好听说360抢票是如何如何牛逼,所以也试一下,还别说,还真买到了,呵呵,人品爆发!
回想买票过程,选择 乘客,席别,车次后 后面的事交给软件就好了,有票的话,还自动识别验证码,最后能自动识别验证码这点让我这菜鸟很是敬佩
哇塞,这么牛掰,第一次识别验证码失败后紧接着第二次识别,第三次,终于识别对了,然后自动提交订单神马的。。。
有点我比较反感,为毛一定要360专用浏览器,看那不也是用谷歌浏览器的内核吗?装逼。。。。
好吧,废话不多说了,开始正题吧
打开360所谓抢票专用浏览器,并打开地址 http://pc.huochepiao.360.cn/ NND,又提示说需要安装插件,
好吧,添加插件,等会奇迹的一刻发生了,,,NM
这界面不是很熟悉吗?这除了那个 icon 换了,界面不是跟谷歌浏览器添加插件时一样一样的吗?。。。
同时右下角小管家也弹出了一个提示,,
.crx 这下我敢100%肯定了,360这货用的就是用跟谷歌浏览器一个内核,我处于本能,马上定位到这个.crx文件,迅速把这个插件复制备份,
用来分析,看验证码自动识别到底用了些啥,直接将扩展名改成.zip然后解压(后来在谷歌浏览器中尝试安装,你猜怎么着?没错,安装成功了!
这充分说明所谓的专用浏览器都是幌子,骗装机量来的!),挨个JS查找,找啊找,JS被混淆了,很难看,所以挨个美化了先,终于在一个叫 ticket_content.otn.min.js里找到了这么些,
顺藤摸瓜,在 ticket_bg.min.js 找到了这个
,
纳尼,直觉告诉我,这跟验证码自动识别有很大关系,,http://check.huochepiao.360.cn/img_yzm? 后台访问了这个地址get 了两个参数,a ,b 那这两个参数怎么来的呢?
不用怕,用 Fiddler Web Debugger 来帮忙抓请求,(为了有请求,所以又模拟抢票了,让它开始执行验证码自动识别),
功夫不负有心人,在验证码识别了四次后终于成功了,有了数据,那就慢慢分析吧,
发现这次识别只差一个),经过4次识别终于识别完成,
突然想,要是能把这个用到自己的项目来做自动识别,那是多么吊炸天的事呀!于是乎自己找了张验证码转换成base64代入上面的URL,
结果很失望,返回了{“res”:”0000″} 没成功响应,心想,是不是处在了check参数上?试着把这张图的base64的MD5算出来换到后面,谁知还是不成功,
那么这个参数是怎么算出来的呢?,再回想上面看JS的时候不是有个getMySig函数,于是乎找到了这个,
,
没错,最后还调用了PIAO.plugin.GetSig 这个方法,这个签名算法到底里面做了些什么?我找了很久还是没有找到,
估计是被封装到了插件中plugin这个目录下的 helper.dll 文件中了。
PS:通过
点击ticket_bg.html 这个页面在控制台调用PIAO.plugin.GetSig();方法能获取一个签名,这种获取方法太过于笨拙,最终通过这个签名成功的让360帮我识别了那个验证码,嘿嘿,差的远,识别的是 5CEC
这个离我想象中的状况差远了,我本想看能不能直接用他们的类库什么的或者一个未公开的URL来帮我做识别,最后看来是我多想了,360早已经把后门给堵死了,不愧是流氓软件出身呀!
哎,自己都觉得说的语无伦次的,如果看官都看到这了,估计你也很无聊,上面是我今天下午三点开始到六点无聊的成果,不喜欢勿喷!谢谢。。。
最后还发现一个奇怪的请求,谁能告诉我这个是神马?
找到一个以blob:http://开头的请求 ,
问度娘,度娘说不知道,问谷哥,谷哥告诉我一大堆英语,没兴趣看(有谁知道能告诉我吗?谢谢。),好吧,这个望尘莫及