用次世代2.3训练自己的字符库cds小demo

来源:互联网 发布:天猫和淘宝价格对比 编辑:程序博客网 时间:2024/04/30 10:43

从我前几天写的 python 基于次世代验证码识别系统的小demo 中大家可以得知,如果有antiVC.dll 和关于特定网站的字符库cds,我们就能够让浏览器自动识别验证码了。虽然网络有不少视频关于怎么训练cds,我还是总结下吧,哎,备忘。

自己训练数据相对于去购买什么超级鹰API啊,de-captcher啊这种验证码识别平台,有2个好处,一是不用考虑网络延迟,二是API都是收费的,小弟我也是Naive得贡献了10几刀的,╮(╯▽╰)╭

这里可以贡献下怎么用de-captcher的验证平台(前提是你先注册了de-captcher用户并且购买了次数):

#验证码在线验证def getTextFromImg(img_file):    data = {        'username': 'your_user',        'password': 'your_pass',        'function': 'picture2',        'pict_to': '0',        'pict_type': '0',        'pict': img_file    }    keys = 'ResultCode|MajorID|MinorID|Type|Timeout|Text'.split('|')    de_captcher_server = "http://poster.de-captcher.com/"    try:        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())        result = opener.open(de_captcher_server, urllib.urlencode(data))        data = result.read()        #print 'check_code:',data        return dict(zip(keys, data.split('|')))    except KeyError,e:        print str(e)        return result


目标:http://jiaowu.dlufl.edu.cn/


可以发现它的验证码地址是我们最喜欢的固定URL,每次F5都是新的验证码。

有些网站验证码动态URL,而且还是JS生成,我们需要JS解析器。

那个要自己写脚本跑,思路有两种:

一是浏览器截图,可参考我之前写的:Pyqt 浏览器截图小demo

二是通过selenium+PhantomJS,动态解析页面源代码下载下来,获取URL后通过访问下载图片,可参考我之前写的:selenium 操控浏览器

有些同学可能发现了,方法二得到的验证码是不同于第一次获得的验证码,毕竟每次访问都会更新,又有什么关系呢?

我们只要获得验证码图片用来训练就行了。


总之上面的情况暂时不考虑,我们现在遇到的是最简单的情况,同一URL可获取不同的验证码:



OK,打开次世代2.3,在地址栏输入:http://jiaowu.dlufl.edu.cn/ACTIONVALIDATERANDOMPICTURE.APPPROCESS,点击下载图像:



然后依次选择:分割识别、平均分割(因为看起来四四方方的很规整)、显示字符分割矩形框、显示识别结果、点击最右边的加号选择图像二值化:


再点击字模管理,选中自动分割图像:



双击第一个矩形“9”:



选择切除白边(有些杂点多的还要去除杂点),然后在右边对应字符填下:9,告诉程序,以后遇见这种字符它就是9:



弄完一个后点击“图像重载”,对第二个矩形3,做同样的操作:



填入3后,我们可以看到已经有两个字模了,弄完这些就可以保存退出:



好的回到主界面,我们点击重新识别,可以看到喜人的结果:


好的,当你识别率很高很高的时候,点击项目管理,发布识别库,就能生存可爱的专属的cds啦,不过正版软件每次25软妹币,你舍得吗?



吐槽下:

这基本上是我遇到的最最简单的字模创建了,没任何杂点,验证码超级规整,和我攻克的网站一比较就是被吊打的存在。。

有些难的,2000个字模以下别想识别成功,2k个啊有木有!!

要做足足两天啊有木有!!!

难怪淘宝特定网站cds售价都是2k,3k软妹币啊有木有!!!

不是人干得的啊有木有!!!

而且你还以为有些网站验证码这么容易获得吗?还不是一个个用脚本去跑的啊有木有!!


1 0
原创粉丝点击