链家登录 验证码识别

最近在研究如何识别验证码,决定从简单的验证码识别开始。于是在百度上搜“登录” 找到这个不会倾斜 只是数字的验证码。 是链家的登录。
https://passport.lianjia.com/cas/login?service=http%3A%2F%2Fbj.lianjia.com%2F
QQ截图20160607094942

思路为 将验证码转化为黑白,然后分隔单个数字, 应为每个数字的大小和字体都是固定的 所以只需要储存好 0-9的图形数据就行了

 

第一步将验证码转化为黑白

QQ截图20160607095837

这时麻烦就出来了 , 这是什么鬼 居然还有噪点 。     开始还以为是我转化时候产生的问题 ,结果是因为图片格式为jpg  jpg是有损保存图片的  难免有噪点, 只是小点颜色比较浅,肉眼感觉不出来 。

 

看来不能单靠php内置函数转化为黑白了,  只有手动解决。   于是我遍历所有像素点, 将所有浅色点 都转化为白色, 非浅色点都转化为黑色。并把边框去掉 。

由于每个字符大小 位置固定 ,顺便将四个字符取出来

得到下图

 

QQ截图20160607110734

这时候问题就变的简单起来了,  把每个字符的黑白像素点用数组保存起来 。 如黑色为1 白色为0。  将数组输出到浏览器 ,然后手动把得到的数组和字符关联储存起来。

QQ截图20160607144942

要实现识别验证码 ,直接对比本地储存数据。

大功告成。

QQ截图20160607122502

测试了十多个,发现都正确 ,识别率百分之百。

 

One Response so far.

  1. 徐兴说道:
    太感谢了!

LEAVE A COMMENT