图片验证码获取及验证

流程图

服务层

接口 代码片.

public BufferedImage getImage(HttpSession httpSession);

实现类 代码片.

@Overridepublic BufferedImage getImage(HttpSession httpSession) {BufferedImage bufferedImage = new BufferedImage(W, H, BufferedImage.TYPE_INT_BGR);Graphics graphics = bufferedImage.getGraphics();graphics.setColor(Color.white);graphics.fillRect(0, 0, W, H);StringBuffer StringBuffer = new StringBuffer();Font font = new Font("微软雅黑", Font.BOLD, 24);//随机验证码字符for(int i=0;i<4;i++) {String zm=getZM();StringBuffer.append(zm);graphics.setFont(font);graphics.setColor(randomColor());graphics.drawString(zm,(1+i)*(W/6),H*3/4);}String code = StringBuffer.toString();httpSession.setAttribute("code", code);//将code验证码存入sessionhuaXian(graphics);return bufferedImage;}//添加干扰线public void huaXian(Graphics graphics) {Random random = new Random();for(int i=0;i<5;i++) {graphics.setColor(randomColor());int x1 = random.nextInt(20);int y1 = random.nextInt(H);int x2=(W-20)+random.nextInt(20);int y2=random.nextInt(H);graphics.drawLine(x1, y1, x2, y2);}}public Color randomColor() {Random random = new Random();int R = random.nextInt(256);int G = random.nextInt(256);int B = random.nextInt(256);Color color = new Color(R,G,B);return color;}public String getZM() {Random random = new Random();//获取26个小写字母String str = String.valueOf((char)(97+random.nextInt(26)));//数字int str1 = random.nextInt(10);if(random.nextInt(2)==1) {if(random.nextInt(2)==1) {return str;}else {return str.toUpperCase();}}else {return str1 + "";}}

控制层

代码片.

@RequestMapping("getcode")public void getcode(HttpServletResponse httpServletResponse,HttpSession httpSession) {BufferedImage image=hwservice.getImage(httpSession);try {ServletOutputStream outputStream = httpServletResponse.getOutputStream();ImageIO.write(image, "png", outputStream);} catch (Exception e) {e.printStackTrace();}}@RequestMapping("checkCode/{code}")@ResponseBodypublic String checkCode(@PathVariable("code")String code,HttpSession httpSession) {//取出session中的code验证码String checkCode = httpSession.getAttribute("code").toString();if(checkCode!=null) {if(checkCode.equals(code)) {return"OK";}}return"NO";}

客户端

代码片.

//根据自身环境需求设置大小样式
<div class="form_text_ipt" style="position: relative;">
<input name="name" type="text" placeholder="验证码" id="codeid" />
<img src="authCode" id="codeImg" onclick="chageCode()" style="width: 90px; height: 30px; position: absolute; top: 3px; right: 5px;" />
</div>
//点击图片验证码进行切换
function changeCode() {$("#codeImg").attr('src', 'authCode?abc=' + Math.random());}
//获取验证码输入框的值
var code-id = $("#codeid").val();
//发送请求将输入的验证码与后端生成的进行比较
$.get("checkCode/"+captcha,function(result){console.log(result);
});

有需要了解的可以留言,看到必回!

图片验证码获取及验证相关推荐

  1. 爬虫笔记40之反爬系列三:复杂验证码的处理(12306图片验证码、行为验证:selenium鼠标行为链 + 算法)

    一.12306图片验证码 ​ 解决方案: selenium(鼠标行为链) + 打码平台 ​ 思路: 通过selenium来加载登录页面,获取验证码图片.我就可以把验证码图片交给超级鹰打码平台进行处理. ...

  2. XX健康:移动端开发-体检预约验证码30秒倒计时短信验证码获取与验证DatePicker日历展示提交预约复杂流程阿里短信工具类

    1. 体检预约流程 用户可以通过如下操作流程进行体检预约: 在移动端首页点击体检预约,页面跳转到套餐列表页面 在套餐列表页面点击要预约的套餐,页面跳转到套餐详情页面 在套餐详情页面点击立即预约,页面跳 ...

  3. 【java图片验证码】Java 服务端生成图片验证码及验证

    Java 服务端生成图片验证码及验证 简介 验证码是防止有人利用机器人自动批量注册.对特定的注册用户用特定程序暴力破解方 式进行不断的登录.灌水.因为验证码是一个混合了数字或符号的图片,人眼看起来都费 ...

  4. django 手机验证码获取

    注册已经完成的逻辑 之前我做了图片验证码的逻辑,然后为了完成注册,我需要再让用户验证一次手机号码. 为了验证手机号码,我必须获取用户的手机,还需要先验证图片验证码.所以在发送手机验证码之前,我需要先验 ...

  5. 怎么看python环境变量配置是否好了验证图片_python 的 tesserocr 模块安装与获取图片验证码...

    OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程.对于图形验证码来说,它们都是一些不规则的字符,这些字符确实 ...

  6. 模拟动态登录,获取cookie和图片验证码登录(AcFun和豆瓣)

    #模拟登录acfun #导入第三方库 import requests import pickle from bs4 import BeautifulSoup from fake_useragent i ...

  7. python 登陆网站图片验证,用python登录带弱图片验证码的网站

    上一篇介绍了使用python模拟登陆网站,但是登陆的网站都是直接输入账号及密码进行登陆,现在很多网站为了加强用户安全性和提高反爬虫机制都会有包括字符.图片.手机验证等等各式各样的验证码.图片验证码就是 ...

  8. 图片验证码、阿里云短信发送和验证的逻辑

    图片验证码的生成 1.django 缓存设置 1.1 安装Django缓存模块 pip install django-redis==4.12.1 1.2 syl/settings.py中配置缓存 # ...

  9. python+appium自动化测试获取短信+图片验证码

    本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示: 在手机的通知栏中获取短信内容 通 ...

  10. python+appium自动化测试-获取短信+图片验证码

    本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示: 在手机的通知栏中获取短信内容 通 ...

最新文章

  1. CVPR2020:4D点云语义分割网络(SpSequenceNet)
  2. 《众妙之门——Web用户体验设计与可用性测试》一第2章 在网页设计中通过测量数据优化情感投入2.1 情感应答和行为应答的关系...
  3. 双流棠湖中学怎么样_棠湖中学教师团队荣获四川省“最美教师团队”!
  4. 【重磅】Google官方推出了免费的、中文的、机器学习初级课程。
  5. 泽西岛/贾克斯RS:流式JSON
  6. ASP.NET中使用非托管DLL
  7. lda数学八卦_【技术博客】文本挖掘之LDA主题模型
  8. Android Studio:解决DataBinding v4包问题
  9. mysql 字符串截取_MySQL|SUBSTR() 函数用法
  10. 《英雄联盟:双城之战》全球首映 沉浸式观影打造追剧新潮流
  11. Android中 ExpandableList的使用2
  12. QQ上最牛的离线留言消息
  13. java url编码和js的url编码_Java URLEncoder与URLDecoder编码解码使用示例
  14. java properties native2ascii_properties文件国际化之native2ascii
  15. ABAP 7.4 CORRESPONDING()语法
  16. 约翰 霍普克罗夫特计算机科学中心,北京大学
  17. html 页眉选项卡,步骤如下: (1)在插入选项卡的页眉和页脚选项组中单击【页眉】按钮...
  18. 【融职培训】Web前端学习 第3章 JavaScript基础教程9 内置对象
  19. TypeScript免费视频图文教程(2W字)
  20. 每周精品之读书20190325腾讯传1998-2016:中国互联网公司进化论

热门文章

  1. 30款各大论坛的XP
  2. 计算机安全超级工具集
  3. 《惢客创业日记》2021.07.25(周日)当生日遇上套路
  4. 计算机专业类ppt背景图片,6种方法,教你做出高大上PPT及背景-ppt背景图片怎么设置...
  5. 上海市建筑工程资料管理软件
  6. 会计常用的Excel函数公式大全(共21个)
  7. addr2line 动态库
  8. 如何让win7像win10一样漂亮-win7美化
  9. Struts功能详解——ActionForm
  10. 病毒手动查杀(威金 q盗 熊猫烧香)