最近需要做一个项目、有一特殊需求:就是把传统的人工注册方式改为机器(程序)注册、但很多注册页面都加有验证码。请教一下高手和前辈:如何才能通过程序自动读取(识别)验证码?开发环境 (JDK、Tomcat)我的QQ号码:544588699我的Msn 号:[email protected]

解决方案 »

  1.   

    没戏,那是一个梦想。
    你看看Google和微软的注册码,眼睛都分辨不行,你还指望机器能识别!
      

  2.   

    OpenCV 去看看这个项目吧,据说"绿坝·花季护航"就是使用这个来识别,拦截黄色图像的.
      

  3.   

    从服务器端去解决吧。比如开个后门,比如:如果输入是“!@#$%^&*()_+|”就认为是正确的。回头再把后门关了就行了 ,哈哈。
      

  4.   

    除非你能拦截到他服务器产生的验证码,然后获取,否则就是ORC扫描,但目前扫描还是不太准确
      

  5.   

    用个 servlet 生成的啦!一般都这么做的。
      

  6.   

    <%@ page autoFlush="false"  import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*" pageEncoding="GBK"%><%
    //set Chinese Char 
    request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");
    response.setContentType("text/html; charset=GBK");
    %>
    <%
    String chose="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";char display[]={'0',' ','0',' ','0',' ','0'},ran[]={'0','0','0','0'},temp;Random rand=new Random();for(int i=0;i<4;i++)
    { temp=chose.charAt(rand.nextInt(chose.length())); display[i*2]=temp; ran[i]=temp;
     }
     
    String random=String.valueOf(display);session.setAttribute("random",String.valueOf(ran));
     %>
    <%        out.clear();
            response.setContentType("image/jpeg");
            response.addHeader("pragma","NO-cache");
            response.addHeader("Cache-Control","no-cache");
            response.addDateHeader("Expries",0);
            int width=65, height=22;
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics g = image.getGraphics();
            //以下填充背景颜色
            g.setColor(Color.white);
            g.fillRect(0, 0, width, height);
           //设置字体颜色
            g.setColor(Color.blue);
            Font font=new Font("Arial",Font.PLAIN,15);
            g.setFont(font);
            g.drawString(random,5,20);
            g.dispose();
            ServletOutputStream outStream = response.getOutputStream();
            JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
            encoder.encode(image);
            outStream.close();
            out.clear();
    out = pageContext.pushBody();
       %>在html中
    <script type="text/javascript">
           var i=0;
       function aa(mm){
         mm.src="/iCharms/web/allied/checkCode2.jsp?i="+i;
            i++;
           }
    </script><html:text styleId="code" property="code" styleClass="inputL"/>
    <img src="/iCharms/web/allied/checkCode2.jsp" onclick="aa(this);" style="height:20px;" align="bottom"/>
    在actomForm中设置一个属性 ,(属性名和文本框的名称一致)。
       private  String code;
      在action中进行判断输入的验证是否正确。
    //获得验证码
    String code=(String)request.getSession().getAttribute("chechCode2");
    //判断
    if(!code.equalsIgnoreCase(alliedForm.getCode())){
    }
      

  7.   

    靠  验证码不是你们想的那样的  是随机的生成几个数字 然后把这几个数字 传给java的  一个图片生成类生成一张图片 ,你要做的就是把这几个数字记下来  看看 他输入的和你记下的数字  一样不 一样而已,比较的还是字符串,你以为是图片啊。不知道你们怎么想的,你以为是扫描啊 ,那有那么高科技。我晕!!!
    楼主,记得给分啊