图片验证码生成原理
图片验证码一般是 26 个字母加 0 到 9 随机数生成,比如生成 4位或者6位的数字英文验证码。一般不区分大小写。生成之后通过调用画图方法画到承载验证码的带底色的图片中,页面显示时是一带验证码张的图片。
这种可能会被软件破解识别。可以加一些颜色或者线条的混淆来 降低识别率来,一定程度上防止被破解。
图形验证码可调整的主要属性如下:
- 验证码的字体
- 验证码的字体大小
- 验证码的字体颜色
- 验证码内容的范围(数字、字母、中文汉字)
- 验证码的图片大小。 边框、边框粗细、边框颜色
- 验证码的干扰线
- 验证码的样式(3D, 普通模糊)
验证码生成最佳实践
- 用不同的颜色渲染字符
- 使某些字符比背景更暗,并使某些字符更亮
- 为背景和角色使用渐变色
- 不要将所有字符垂直对齐
- 不要回答单词,以便可以使用字典
- 使用更多的字符和符号
- 使用大写和小写字符
- 每次使用不同数量的字符
- 更加剧烈地旋转一些字符(即倒置)
- 做更多的字符重叠
- 使单个字符的一些像素不接触
- 网格线与相同颜色的字符交叉
- 考虑问自然语言问题
验证码库
以下采集了来自网络上常用的验证码库:
Java验证码生成库 JCaptcha
Struts验证码插件 JCaptcha4Struts2
Java图形验证码 SimpleCaptcha
Java验证码 kaptcha
Java验证码 patchca
Java验证码生成库 imageRandom
iCaptcha
Java图片验证库SkewPassImage
Java 验证码 Cage
Python pycapt
PHP Gregwar/Captcha
PHP mewebstudio/captcha
Node node-captcha
Node gifcaptcha
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。