CAPTCHA项目是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称,已由卡内基梅隆大学注册商标。
CAPTCHA的目的是区分计算机和人类的一种程序算法,这种程序必须能生成并评价人类能很容易通过但计算机却通不过的测试。这个要求本身就是悖论,因为这意味着一个CAPTCHA必须能生成一个它自己不能通过的测试。
大家可以看看CAPTCHA的一个例子:
人类能够比较容易识别图片中的字母,但如果编写计算机程序,难度就非常大了。
按照Lenore Blum的说法,任何的图片中的内容都能被识别,不存在一种计算程序生成的图片不能被计算机程序识别出来。
于是,比赛开始了,有人站到Captcha一方,有人站到破译Captcha的一方.......
关于Captcha的信息,参考下面的链接
Captcha方:
Captcha项目:http://www.captcha.net/
jCaptcha项目:http://jcaptcha.sourceforge.net/
破译Captcha方:
http://www.cs.sfu.ca/~mori/research/gimpy/
http://sam.zoy.org/pwntcha/
http://www.brains-n-brawn.com/default.aspx?vDir=aicaptcha
在pom.xml文件加入如下内容:
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha-all</artifactId>
<version>1.0-RC6</version>
</dependency>
在spring的配置文件里面定义如下:
<!-- set jcaptcha on spring -->
<bean id="jcaptchaService"
class="com.octo.captcha.service.multitype.GenericManageableCaptchaService">
<constructor-arg index="0">
<ref bean="imageEngine" />
</constructor-arg>
<constructor-arg index="1">
<value>1</value>
</constructor-arg>
<constructor-arg index="2">
<value>180000</value>
</constructor-arg>
</bean>
<!-- coding way to set imageEngine-->
<bean id="imageEngine"
class="com.octo.captcha.engine.image.gimpy.DefaultGimpyEngine">
</bean>
官方的Configuration example:
This jcaptcha configuration using spring embeded two configurations files :
The first one configures ImageCaptchaFactories
The second one configures ImageCaptchaEngine and ImageCaptchaService
http://forge.octo.com/jcaptcha/confluence/display/general/ImageCaptchaEngine+components+reference
ImageCaptchaFactories.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ************ FACTORIES declaration ************-->
<!-- Constructs a captcha factory which produce captcha,
from a word generator (the content) and a word to image (the representation)-->
<bean id="imageCaptchaFactory" class="com.octo.captcha.image.gimpy.GimpyFactory" >
<constructor-arg><ref bean="wordgen"/></constructor-arg>
<constructor-arg><ref bean="wordtoimage"/></constructor-arg>
</bean>
<!-- ************ WORD 2 IMAGE declaration ************-->
<!-- Constructs a WordToImage, which assemble components: a font generator,
a background generator, a paster and deformations:
the fist one deform the background only (none is the "null" deformation, which does nothing)
the second one deform the text only (none is the "null" deformation, which does nothing)
the third one deform the hole picture
-->
<bean id="wordtoimage" class="com.octo.captcha.component.image.wordtoimage.ComposedWordToImage" >
<constructor-arg index="0"><ref bean="fontGenRandom"/></constructor-arg>
<constructor-arg index="1"><ref bean="backGenUni"/></constructor-arg>
<constructor-arg index="2"><ref bean="simpleColoredPaster"/></constructor-arg>
<!-- <constructor-arg index="3"><ref bean="none"/></constructor-arg>-->
<!-- <constructor-arg index="4"><ref bean="none"/></constructor-arg>-->
<!-- <constructor-arg index="5"><ref bean="ripple3Def"/></constructor-arg>-->
</bean>
<!-- ************ BACKGROUND declaration ************-->
<!-- Constructs a background generator,
this one is the default Unicolor, white is background color -->
<bean id="backGenUni" class="com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator" >
<constructor-arg index="0"><value>300</value></constructor-arg>
<constructor-arg index="1"><value>100</value></constructor-arg>
</bean>
<!-- ************ FONT declaration ************-->
<bean id="fontArial" class="java.awt.Font" >
<constructor-arg index="0"><value>Arial</value></constructor-arg>
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2"><value>10</value></constructor-arg>
</bean>
<bean id="fontTahoma" class="java.awt.Font" >
<constructor-arg index="0"><value>Tahoma</value></constructor-arg>
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2"><value>10</value></constructor-arg>
</bean>
<bean id="fontVerdana" class="java.awt.Font" >
<constructor-arg index="0"><value>Verdana</value></constructor-arg>
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2"><value>10</value></constructor-arg>
</bean>
<bean id="fontComic" class="java.awt.Font" >
<constructor-arg index="0"><value>Comic sans MS</value></constructor-arg>
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2"><value>10</value></constructor-arg>
</bean>
<bean id="fontLucida" class="java.awt.Font" >
<constructor-arg index="0"><value>Lucida console</value></constructor-arg>
<constructor-arg index="1"><value>0</value></constructor-arg>
<constructor-arg index="2"><value>10</value></constructor-arg>
</bean>
<!-- ************ FONT GENERATOR declaration ************-->
<!-- Constructs Font generator, with the min and max size of font,
and with a list of fonts-->
<bean id="fontGenRandom" class="com.octo.captcha.component.image.fontgenerator.RandomFontGenerator" >
<constructor-arg index="0"><value>40</value></constructor-arg>
<constructor-arg index="1"><value>50</value></constructor-arg>
<constructor-arg index="2">
<list>
<ref bean="fontArial"/>
<ref bean="fontTahoma"/>
<ref bean="fontVerdana"/>
<ref bean="fontComic"/>
<ref bean="fontLucida"/>
</list>
</constructor-arg>
</bean>
<!-- ************ PASTER declaration ************-->
<!-- Constructs the paster component, a baffle one, which make holes in characters
Parameters :
int for the min length of the word
int for the max length of the word
ColorGenerator for the color of the word
boolean to know if each character can have a different color
-->
<bean id="simpleColoredPaster" class="com.octo.captcha.component.image.textpaster.RandomTextPaster" >
<constructor-arg type="java.lang.Integer" index="0"><value>4</value></constructor-arg>
<constructor-arg type="java.lang.Integer" index="1"><value>6</value></constructor-arg>
<constructor-arg type="com.octo.captcha.component.image.color.ColorGenerator" index="2"><ref bean="colorGenRandomDark"/></constructor-arg>
<constructor-arg index="3"><value>true</value></constructor-arg>
</bean>
<!-- ************ DIC and WORD GENERATOR declaration ************-->
<!-- Constructs a File diconnary, which will read words from a file, corresponding to Locle (for instance with locale France,
it will look for the file : toddlist_fr_FR.properties, if not found, take toddlist.properties -->
<bean id="filedict" class="com.octo.captcha.component.wordgenerator.FileDictionnary" >
<constructor-arg index="0"><value>toddlist</value></constructor-arg>
</bean>
<!-- <bean id="wordgen" class="com.octo.captcha.component.wordgenerator.DictionaryWordGenerator" >
<constructor-arg><ref bean="filedict"/></constructor-arg>
</bean>-->
<!-- Constructs a word generator, which composed words from existing words
It takes a diconnary for the existing words-->
<bean id="wordgen" class="com.octo.captcha.component.wordgenerator.ComposeDictionaryWordGenerator" >
<constructor-arg><ref bean="filedict"/></constructor-arg>
</bean>
<!-- ************ FILTER declaration ************-->
<!-- Constructs the "null" deformation component-->
<bean id="none" class="com.octo.captcha.component.image.deformation.ImageDeformationByFilters" >
<constructor-arg index="0">
<null/>
</constructor-arg>
</bean>
<!-- ************ COLORS Declarations ************-->
<!-- Constructs a java Color-->
<bean id="white" class="java.awt.Color" >
<constructor-arg type="int" index="0"><value>255</value></constructor-arg>
<constructor-arg type="int" index="1"><value>255</value></constructor-arg>
<constructor-arg type="int" index="2"><value>255</value></constructor-arg>
</bean>
<!-- Constructs a color generator which generate one color -->
<bean id="colorGenWhite" class="com.octo.captcha.component.image.color.SingleColorGenerator" >
<constructor-arg index="0"><ref bean="white"/></constructor-arg>
</bean>
<!-- Constructs a color generator which generate dark color correspond to the different ranges-->
<bean id="colorGenRandomDark" class="com.octo.captcha.component.image.color.RandomRangeColorGenerator" >
<constructor-arg index="0">
<list>
<value>0</value>
<value>150</value>
</list>
</constructor-arg>
<constructor-arg index="1">
<list>
<value>0</value>
<value>150</value>
</list>
</constructor-arg>
<constructor-arg index="2">
<list>
<value>0</value>
<value>150</value>
</list>
</constructor-arg>
<constructor-arg index="3">
<list>
<value>255</value>
<value>255</value>
</list>
</constructor-arg>
</bean>
</beans>
ImageCaptchaService.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Constructs a captcha engine, with custom factories-->
<bean
class="com.octo.captcha.engine.GenericCaptchaEngine" id="imageEngine">
<constructor-arg index="0">
<list>
<ref bean="imageCaptchaFactory"/>
</list>
</constructor-arg>
</bean>
<bean id="imageCaptchaService"
class="com.octo.captcha.service.multitype.GenericManageableCaptchaService">
<constructor-arg index="0">
<ref bean="imageEngine"/>
</constructor-arg>
<constructor-arg index="1"><value>300</value></constructor-arg>
<constructor-arg index="2"><value>200000</value></constructor-arg>
</bean>
</beans>
分享到:
相关推荐
最全最完整的网站登录ASP验证码CAPTCHA源代码,只需要一个文件,包含多种可参考的源码: asp-captcha-master.zip ASP-Classic-Google-rCaptcha-code-master.zip AspDigitalCaptcha-master.zip ASP版验证码源码完整版...
原生js 实现图片验证码
AJ-Captcha行为验证码是一款用于网站安全验证的工具,版本为1.3.0。这款验证码系统旨在防止自动化脚本或机器人进行恶意操作,如垃圾邮件发送、账户注册、恶意登录等。它通过检测用户在输入验证码时的行为模式来判断...
本文实例讲述了CI框架验证码CAPTCHA 辅助函数的用法,分享给大家供大家参考。具体如下: 使用CAPTCHA 辅助函数很方便生成验证码,但是图片是存储在文件夹下,不是输出流,感觉不够完美,可以拿来用用。 说明:产生4...
在Laravel框架中,Captcha是一个非常重要的组件,它用于生成和验证图像验证码,从而防止自动化的机器人或者恶意用户进行不合法的操作,如批量注册、恶意登录等。本篇文章将详细探讨Laravel 5中Captcha的使用方法、...
行为验证码AJ-Captcha 1.3.0是一种用于网络安全验证的解决方案,旨在防止自动化脚本或机器人进行恶意操作。此版本提供了丰富的功能和多种平台的支持,包括前后端交互,以及前端框架如Vue.js、H5、Android、iOS、...
本集成教程将详细介绍如何在项目中使用aj-captcha库来实现滑块验证码功能,特别适用于基于若依前后端分离架构的应用。 首先,aj-captcha是一个专门用于生成滑块验证码的JavaScript库,它提供了一种动态、直观的方式...
"CAPTCHA"是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是验证码技术的标准术语。"ValidCode"则可能是这个控件的内部名称或者...
验证码(CAPTCHA)是一种用于验证用户是否为人类的技术,通常用于防止自动化程序的滥用,如垃圾邮件或恶意注册。然而,随着深度学习和图像识别技术的发展,验证码也变得越来越复杂,需要更高级的算法来解析。`pycapt...
Vue3-Captcha是一款专为Vue3框架设计的行为验证码插件,旨在提高网站的安全性,防止自动化脚本或机器人进行恶意操作。Vue3是Vue.js框架的最新版本,它引入了许多性能优化和开发体验改进,包括Composition API、...
在Drupal中,验证码(CAPTCHA)是一种重要的安全机制,用于防止自动程序(如机器人)进行恶意活动,如垃圾邮件发布或未经许可的注册。本文将深入探讨Drupal中的CAPTCHA工具及其作用。 验证码(Completely Automated...
英文版验证码数据集,可以用于算法的验证,可以参考https://blog.csdn.net/c_he_n/article/details/122213798?spm=1001.2014.3001.5501 。
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,即全自动区分计算机和人类的图灵测试。它的主要目标是通过让用户完成一个简单的任务(如识别扭曲的...
JCaptcha(Just Another CAPTCHA)是一个开放源代码的Java实现的验证码解决方案,它的设计目标是提供高效、可定制且安全的验证码服务。 ### 一、JCaptcha简介 JCaptcha由Glen Daniels在2006年创建,其主要特性包括...
人工智能-项目实践-深度学习-使用深度学习来识别 captcha 验证码 本项目会通过 Keras 搭建一个深度卷积神经网络来识别 captcha 验证码,建议使用显卡来运行该项目。 下面的可视化代码都是在 jupyter notebook 中...
本源码提供了一个基于Javascript的行为验证码AJ-Captcha设计。项目包含1645个文件,其中包括343个PNG图片、241个PHP文件、139个Swift文件、93个JavaScript文件、88个H文件、80个M文件、72个XML文件、69个Java文件、...
基于Java的tianai-captcha行为验证码设计源码,该项目包含90个文件,主要文件类型有63个java源文件,以及20个png图像文件。此外,还包括2个jpg图像文件,1个gitignore文件用于版本控制,1个LICENSE许可文件,以及1个...
验证码(CAPTCHA)是一种用于验证用户是否为人类的技术,它通常用于防止自动化程序(如机器人)进行恶意操作,如垃圾邮件发送、账户注册等。在Web开发中,Spring框架是广泛应用的Java后端开发框架,而Jcaptcha则是一...