简单验证码的暴力识别

来源:互联网 发布:java语言入门 编辑:程序博客网 时间:2024/05/16 03:47

模拟登陆的时候经常遇到验证码。python的PyTesser库识别能力不是很理想。像谷歌那样的验证码估计只能靠识别每个字符的规律,棘手。本文针对于简单的验证码进行识别(简单是指:图中数字位置确定),采用特征库匹配的方式,如此图

思想:

1、特征库的收集:下载多张左右的验证码图片,用filter(ImageFilter.CONTOUR).convert('1')进行滤镜处理和转成黑白图。过滤可以弱化图片锯齿。根据每个数字的坐标区域,对图片进行切割,分离出每个位置的数字。然后找出每个位置的质量比较好的数字,纳入到特征库。

2、将要识别的验证码进行filter(ImageFilter.CONTOUR).convert('1')过滤处理,然后对每个数字逐一做如下的匹配:依次从所在位置的特征库中取出一张数字,然后对这两个按照像素,逐个位置进行异或,统计出255的点数,选出白色点数255最少的图片。该位置的所有数字都比较完后白色点数最少的数字就是最相似的数字了。


此方法对于这种形式的验证码成功率还是有70%左右的。很土很暴力。

-------------------------------------------------------------------------------------------

登录的时候,有个比较恶心的问题是要让服务器知道你提交的是哪一次的验证码。这就要用到cookie,下载图片时候会得到一个cookie,然后用这个cookie再post此验证码的识别值。

原创粉丝点击