解决12306图片验证码登陆问题。

    下午登陆12306网站发现验证码已更换成动态验证码,所有抢票软件均已失效,作为资深码农自然会抓紧时间解决问题。闲扯结束,先上图。

  

这里不卖关子直接上最紧要的部分,根据实测,12306这次只是新增加了图片验证码而已其他并没有变化,换句话说以前POST登陆的地址并没有变化,获取动态Key-Value值的逻辑也没变化,只是去掉原来的静态验证码加入动态图片验证码(甚至连randCode名字都没变,且在post登陆时记住用户鼠标点击位置而已,明白这一点很关键)。

  网站具体登陆过程就不详述了,这里主要分析如何通过图片验证(一句话:记住用户点击坐标)。  

  先看问题,请点击下图中所有的购物车,如果是我来做验证逻辑,肯定要记住用户都点击了那些图片,记住图片自然要用到坐标了。

第一个问题:如何保证点击顺序。注意字眼”所有的”,说明你点击的顺序是无关紧要的;

第二个问题:如何获取点击坐标。注意验证码区域,图片变化但是大小基本不变,这里用到了相对定位,想必学过CSS的都知道这货。根据实测,图片大小大约是280*140,可以将图片看成24列的表格,点击任意一个图片相当于点击某一个Cell,因为点击该cell的任意部位皆可,所以编程时这里取最中间的位置,比如第一张图片坐标就是 (35,35)

 

下面看验证过程。

这里发送了POST请求,很明显是进行验证。看里面具体的POST部分。

randCode解码出来就是35,40,256,107,很清晰了吧。

其他POST登陆逻辑并没变化,至此解析结束。

其他

1.关于火车票秒杀软件中的打码。个人感觉还是不要自动过码的好,机器在智能方面还是跟人有欠缺的,搞题库也可行,但12306的题库实时变化且题库还要用到图像识别,势必会让软件体积增大。

2.手工打码的处理。这里只给出我的解决过程,虽然技术上并不完美,但也正确的解决了此处打码问题,如下图:。

3.虽然贴出解决方案很简单,但做任何事都要有时间的积累和知识的沉淀,所谓剑走偏锋,在我看来更多了失败的可能,所以还是踏踏试试好好看书多学习吧!

 

转载于:https://www.cnblogs.com/magicsong/p/4343225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值