验证码识别技术(一)

一,图片下载方法

如果在源文件中,验证码是img形式,就非常好下载处理了。这里就不在陈述了,目前好多验证码都是数据流形式,需要编程处理,首先,要获取验证码的地址,例如:地址为http://aaa.bbb.ccc/code

public static void GetURL() throws ClientProtocolException, IOException {

        // 1,获取图片
        @SuppressWarnings("deprecation")
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://aaa.bbb.ccc/code");//图片的URL
        httpPost.setHeader(CommonConst.UserAgent, CommonConst.HttpAgent);
        httpPost.setHeader("Cache-Control", "max-age=0");
        httpPost.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        httpPost.setHeader("Accept-Encoding", "gzip,deflate,sdch");
        httpPost.setHeader("Accept-Language", "en-US,en;q=0.8");
        httpPost.setHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        httpPost.setHeader("Accept-Encoding", "gzip,deflate,sdch");

        HttpResponse response = httpclient.execute(httpPost);
        HttpEntity entity = response.getEntity();

        byte[] imgArray = new byte[200 * 60];//下载图片后,看图片的大小
        if (entity != null) {
            java.io.InputStream instreams = entity.getContent();
            instreams.read(imgArray);
            httpPost.abort();
        }

        // 2,保存图片
        mWriterPicture("E:\\testc\\1原始验证码\\a.jpg", imgArray);
    }
// 写入图片
    public static void mWriterPicture(String newFileName, byte[] b)throws IOException {
        try {
            File file = new File(newFileName);
            FileOutputStream fStream = new FileOutputStream(file);
            fStream.write(b);
            fStream.close();
            System.out.println("图片创建成功    " + b.length);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
时间: 2024-10-10 20:13:55

验证码识别技术(一)的相关文章

验证码识别技术

在此主要讨论一个验证码识别技术,因为验证码复杂性很高,所以不一定都能识别成功,本文主要的目的是为了研究一下验证码识别的基本流程和模式识别的基本方法.对于其他领域也有参考价值和学习意义. 一整套验证码识别技术应该包括以下几个部分: 1,下载图片 2,图片灰度化 3,去噪音 4,分割成单个字符 5,制作单个字符人工训练集 6,测试分割后的单个字符 7,组合字符显示结果 设计的技术,主要有以下几个方面: 1,图像处理技术 2,机器学习算法 3,网络编程技术

验证码识别技术总结

先说说写这个的背景 最近有在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给OK了,于是乎就KO了这个验证码.达到单个图片识别时间小于200ms,500个样本人工统计正确率为95%.由于本人没有相关经验,是摸着石头过河.本着经验分享的精神,分享一下整个分析的思路.在各位大神面前献丑了.下面是部分总结,欢迎共同讨论交流.

验证码识别技术(三)去除噪音

对于去除噪音的技术,没有一个统一的算法,但是一个网站的验证码噪音,一定是有一定的规则的.只有分析出这个规则,就可以写相应的代码去除干扰. 例如,通过第二步,我们已经去除了一个验证码图片的背景, 很明显能看出,这个验证码图片,被后期的的时候,加入了一条干扰线,而且干扰线出像素点事一致的,那就好办了,我们可以写一个程序,顺序的扫描这条干扰线,然后动态的去除.可以按照第二步的分析像素的方法分析,可以容易的分析出干扰数据. 具体的代码如下所示: /** * 去噪音(去除干扰线) * * @param i

验证码识别 ——知乎网友1

机器自动识别验证码的原理是怎么样的? 我自己写验证码识别模块的时候是这样的,当然不一定大家都这样写,肯定有更好的算法,我要识别的那个验证码是比较简单地那种,所以这样写就够了. 我用Windows的画图工具画了这个张图,用来举个例子: 这是一张分辨率为19*7的图片 1.遍历所有像素点(像PHP就是先getimagesize,获取i和j,然后用imagecolorat进行两重循环,就可以得到所有像素点的RGB值数据),然后二值化[比如判断RGB值小于#FFFFFF的(即非白色)时候标记为1,大于等

【识别码】使用(ImageMagick+tesseract-ocr)实现图像验证码识别实例

最近在搞一个无人值守系统时,需要能自动登录,在登录时需要输入验证码,所以研究了验证码识别技术,否则我这个无人值守系统的作用就没有了.目前只测试了字母和数字的识别,准确率还是可以的,呵呵,已经够我自已用了~~,至于中文的识别可以参考我上篇文章:利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别. 验证码识别率如下图:(准确率还可以吧) 好吧,切入正题,赶快上架源码吧~~,不足之处请多多包涵 注意:在使用验证码识别类之前,一.请先安装好ImageMagick,二.需

常见验证码的弱点与验证码识别

http://drops.wooyun.org/tips/141 常见验证码的弱点与验证码识别 insight-labs · 2013/06/08 11:36 0x00 简介 验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对于Web安全检测有很大的帮助. 全自动区分计算机和人类的图灵测试(英语:Completely Automated Public Turing t

基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的人工智能技术的发展,传统的字符验证已经形同虚设. 所以,大家一方面研究和学习此代码时,另外一方面也要警惕自己的互联网系统的web安全问题. Keywords: 人工智能,Python,字符验证码,CAPTCHA,识别,tensorflow,CNN,深度学习 2   Introduction 全自动区

验证码识别

  本文所使用的验证码识别的方法非常暴力,高手可忽略.对于在客户端实现的“伪验证码”或使用静态图片的验证码,本文不作讨论.对于验证码的识别,一直以为,只要足够的样本,就可以分析出验证码的特征,从而进行分门别类,再通过和样本做比较,就可以得出正确验证码.这里简单而暴力的验证一下这个一直想验证而没有行动过的想法.做实验的网站是某体检机构,因为它生成的验证码很有规律(不确定是不是静态文件,但就可以当成是算法随机生成的),每个字符的位置相对固定,虽然每个字符的颜色和背景都不一样,但是背景颜色很相近,没有

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别 分类: 开放项目2012-07-23 17:28 6712人阅读 评论(0) 收藏 举报 tiffimagecompression引擎pascalcharacter --------------------------------------------------低调的分割线--------------------------------------------------- Linux下有两个重要的编程准则