精华内容
下载资源
问答
  •  用该浏览器运行自己的项目,无论是怎么刷新图形验证,输入后,都是提示图形验证码错误,在网上找了无数的方法: 清空缓存,重启浏览器,重启手机,均无效!!       解决方案:  打开safari浏览器的...

    测试环境:

       苹果手机,safari浏览器

       

    测试步骤:

         用该浏览器运行自己的项目,无论是怎么刷新图形验证,输入后,都是提示图形验证码错误,在网上找了无数的方法:

    清空缓存,重启浏览器,重启手机,均无效!!

     

     

     

    解决方案:

        打开safari浏览器的设置。找到如图所示的位置,在接受cookie哪里选择总是,然后清空缓存,重启浏览器,问题得到了完美的解决

        

    展开全文
  • 一种是纯数字,就是验证码是通过发送短信的这种,这种比较好获取,另一种是图形验证码,有些图形验证码比较简单,比如纯数字的,有些比较复杂,比如字母数字结合还有一些阻碍的线条这种,这时候该怎么获取呢。...

    对于很多项目的登录界面都是需要一个验证码的,对于验证码的方式有两种,一种是纯数字,就是验证码是通过发送短信的这种,这种比较好获取,另一种是图形验证码,有些图形验证码比较简单,比如纯数字的,有些比较复杂,比如字母数字结合还有一些阻碍的线条这种,这时候该怎么获取呢。

    第一种:短信验证码

    1、可以和开发商量,在程序中编写一个万能验证码,就是固定的验证码,除了输入短信接收到的验证码外,输入这个固定的也可以登录成功,这种是成本最低也是最简单的,你说让开发去掉这个验证码登录功能是不现实的。但这个会有一个风险点,我们的代码都是会上到线上,如果在线上,万一被用户随意输入这个验证码,刚好就是设置的万能码这就会出现生产事故,为了防止线上有真实用户触发到,所以还需要设置一个开关控制,就是当这个开发是true的时候,万能验证码才能生效,否则就不能生效,在上线时,就将这个开关关掉即可。这样可以防止线上的事故发生。

    2、可以通过pymysql的模块来编写读取数据库的操作,pymysql是专门针对数据库的一些操作,我们连接上数据库后,编写查询语句,去查询这个验证码,获取到了之后,在把结果返回出来即可。

    第二种:图形验证码

    图形验证码有简单的纯数字,也有复杂的数字+字母结合的

    1、通过pytesseract和pillow图形处理模块进行识别

    首先通过pip install pil 和pip install pytesseract安装这两个模块,安装成功就可以使用了,这两个模块的逻辑是,先截屏整个屏幕,然后在获取验证码的坐标数据,然后根据坐标数据抠图,最后使用pytesseract模块来进行验证,这种方法有个缺点是识别率不高,有时候会识别出错。

    2、通过第三方的API来实现

    第三方的API是万维易源的,地址:https:www.showapi.cpm/   验证码的链接:https:www.showapi.cpm/api/lookPoint/184

    实现的教程:先打开网站,注册一个账号,打开验证码的链接,选择识别类型,例如英文数字验证码,然后下载SDK,根据帮助文档的教程来验证,这是通过AI人工智能来识别字符串的数字,也会有失败的。这个是第三方的,每识别一个验证码时,都会收费,费用很低。

     

    展开全文
  • SSH图形验证码的生成

    2021-03-02 18:58:06
    现在的登录或者注册大部分采用了手机短信验证码验证,很少使用画图的验证码验证,但是我们还是要知道一下怎么画图生成验证码的,主要是让我们看图,然后在输入框内填写自己看到的英文或者数字组合,看下图: ...

    现在的登录或者注册大部分采用了手机短信验证码验证,很少使用画图的验证码验证,但是我们还是要知道一下怎么画图生成验证码的,主要是让我们看图,然后在输入框内填写自己看到的英文或者数字组合,看下图:
    在这里插入图片描述
    可以根据自己的爱好生成全字母或者全数字或者字母和数字的组合,我们来看一下究竟是怎样生成的:
    Jsp:
    在这里插入图片描述
    Js:
    在这里插入图片描述
    struts.xml(action里面name的值要对应src里面的checkImg):

    CheckImgAction类(对应action里面的class小写开头的值):

    package cn.itcast.shop.user.action;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * 验证码Action类
     * 
     * 
     */
    public class CheckImgAction extends ActionSupport {
    	
    	@Override
    	public String execute() throws Exception {
    		int width = 120;
    		int height = 30;
    
    		// 步骤一 绘制一张内存中图片
    		BufferedImage bufferedImage = new BufferedImage(width, height,
    				BufferedImage.TYPE_INT_RGB);
    
    		// 步骤二 图片绘制背景颜色 ---通过绘图对象
    		Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔
    		// 绘制任何图形之前 都必须指定一个颜色
    		graphics.setColor(getRandColor(200, 250));
    		graphics.fillRect(0, 0, width, height);
    
    		// 步骤三 绘制边框
    		graphics.setColor(Color.WHITE);
    		graphics.drawRect(0, 0, width - 1, height - 1);
    
    		// 步骤四 四个随机数字
    		Graphics2D graphics2d = (Graphics2D) graphics;
    		// 设置输出字体
    		graphics2d.setFont(new Font("宋体", Font.BOLD, 18));
    
    		String words = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    		Random random = new Random();// 生成随机数
    		// 定义StringBuffer
    		StringBuffer sb = new StringBuffer();
    		// 定义x坐标
    		int x = 10;
    		for (int i = 0; i < 4; i++) {
    			// 随机颜色
    			graphics2d.setColor(new Color(20 + random.nextInt(110), 20 + random
    					.nextInt(110), 20 + random.nextInt(110)));
    			// 旋转 -30 --- 30度
    			int jiaodu = random.nextInt(60) - 30;
    			// 换算弧度
    			double theta = jiaodu * Math.PI / 180;
    
    			// 生成一个随机数字
    			int index = random.nextInt(words.length()); // 生成随机数 0 到 length - 1
    			// 获得字母数字
    			char c = words.charAt(index);
    			sb.append(c);
    			// 将c 输出到图片
    			graphics2d.rotate(theta, x, 20);
    			graphics2d.drawString(String.valueOf(c), x, 20);
    			graphics2d.rotate(-theta, x, 20);
    			x += 30;
    		}
    
    		// 将生成的字母存入到session中
    		ServletActionContext.getRequest().getSession()
    				.setAttribute("checkcode", sb.toString());
    
    		// 步骤五 绘制干扰线
    		graphics.setColor(getRandColor(160, 200));
    		int x1;
    		int x2;
    		int y1;
    		int y2;
    		for (int i = 0; i < 30; i++) {
    			x1 = random.nextInt(width);
    			x2 = random.nextInt(12);
    			y1 = random.nextInt(height);
    			y2 = random.nextInt(12);
    			graphics.drawLine(x1, y1, x1 + x2, x2 + y2);
    		}
    
    		// 将上面图片输出到浏览器 ImageIO
    		graphics.dispose();// 释放资源
    		ImageIO.write(bufferedImage, "jpg", ServletActionContext.getResponse()
    				.getOutputStream());
    		return NONE;
    	}
    
    	/**
    	 * 取其某一范围的color
    	 * 
    	 * @param fc
    	 *            int 范围参数1
    	 * @param bc
    	 *            int 范围参数2
    	 * @return Color
    	 */
    	private Color getRandColor(int fc, int bc) {
    		// 取其随机颜色
    		Random random = new Random();
    		if (fc > 255) {
    			fc = 255;
    		}
    		if (bc > 255) {
    			bc = 255;
    		}
    		int r = fc + random.nextInt(bc - fc);
    		int g = fc + random.nextInt(bc - fc);
    		int b = fc + random.nextInt(bc - fc);
    		return new Color(r, g, b);
    	}
    }
    

    这样就画出了图形验证码,网上也有很多不同的方法,而且样式自己可以去调。
    还有个问题是怎么获取生成的验证码呢?
    在这里插入图片描述
    因为已经存入session中了,所以直接获取对应的session就可以了。

    展开全文
  • 图形验证码逻辑分 我们看一下注册页面 我们输入手机号,然后输入图片验证码,图片验证码正确才可以发送短信验证码,而却每次发送要想隔60秒 关于这种比较成熟的技术,一定都有大神写好了,所以我们直接拿过来...

    图形验证码逻辑分

    我们看一下注册页面

     

    我们输入手机号,然后输入图片验证码,图片验证码正确才可以发送短信验证码,而却每次发送要想隔60秒

    关于这种比较成熟的技术,一定都有大神写好了,所以我们直接拿过来使用

    这个文件里就存放着写好的图形验证码的代码

    我们直接复制到我们的utils文件夹下

    我们打开写好的图形验证码的代码运行一下

    我们现在不需要知道他是怎么写的,我们只需要知道他返回了两个数据,我们需要使用它,引入captcha

    我们在蓝图文件夹中创建一个文件,来调用我们的验证码

    这里涉及到一个REST风格

    REST架构风格详解:https://mp.weixin.qq.com/s?src=11&timestamp=1606106419&ver=2723&signature=O1pCH*ErzigAO97KwxpScJzxqipTpCXH3iC9K19S4zsXmfSluADAENqqmJNAHIs1CAbDp9-KAMAYrZMfIBZnyXLAxdzJNCi4XfybCWPisLmU7k*wK2Es70qzSpQWAetw&new=1

    保存在Redis中有一个特点,读取快

    现在又出现一个问题,我和好几个人同时访问,生成验证码,怎么知道这个验证码是我的,他应该给每一个验证码生成一个唯一的标识:我们需要使用uuid

    uuid:https://mp.weixin.qq.com/s?src=11&timestamp=1606106857&ver=2723&signature=jsWCKsuxOyvVJ7EBa2i-A1TgBI6OzQrtMQrBYyMiDej8C4n6nBl*ja2HtbyurJkqRRY3iqWhvsv8BUutPFzWAibSrozGNY0kmsydXE*arJlXdfBrMHivj6Trb89ba*U5&new=1

    这个uuid就是用户的唯一标识,如果我们不用uuid呢,我们可以使用时间戳+随机数

    我们在我们新创建的verify_code.py文件中写入我们的代码

    首先导入蓝图

    from . import api

    然后创建路由

    # UUID image_code_id
    # GET 127.0.0.1/api/v1.0/image_codes/<image_code_id>
    @api.route("/image_codes/<image_code_id>")
    def get_image_code(image_code_id):
        pass

    我们在Redis中用那种数据类型来保存数据呢,还有如何处理过期时间(一个验证码长时间不输入就会过期)

    Redis命令参考:http://doc.redisfans.com/

    我们有两个选择:

    1. hash:image_code:{id:1,name:zaaaacki},但是哈希没有办法设置过期时间
    2. string:uuid:xxxx    可以设置过期时间  : SETEX

    总结:图形验证码会遇到的一些问题,

    • 首先我们定义的路由要使用REST风格
    • 然后给验证码生成唯一表示
    1. uuid
    2. 时间戳+随机数
    • 我们需要保存验证码:保存在Redis,数据库等等(这里我们保存在Redis中,因为读写快)
    • 然后确定保存的数据类型:是字符串类型还是哈希类型
    • 然后设置验证码过期时间:哈希类型不能设置过期时间,所以我们选择字符串类型使用SETEX命令
    展开全文
  • 学习卤菜制作,对于新手来说,首先要对卤菜有一个大致的了解,下面,小编简单给大家介绍一下关于卤菜原理性的东西,以便能够更好去理解卤菜是一个怎么样的烹饪方式。首先来说卤菜, 卤菜是烹饪学上凉食菜肴的通称,...
  • 山水画的“传统”,应该怎么临摹学习?写生在山水绘画中的意义何在?日前,中国传媒大学美术传播研究所研究员、中国美术家协会会员翟晖在“画境”中国画名家作品展暨线上沙龙上发表独到见解。翟晖:所谓师法传统,是...
  • 我做了一个登陆系统,需要输入用户名、密码和图形验证码。 但是一进入到系统的登录页面,tomcat后台就抛出了异常。 我的图形验证码是通过一个servlet来实现的,在登录页面代码如下 请问下面的异常是怎么抛出的? ...
  • 听说验证码战场硝烟弥漫 上一期我们简单的介绍了图形验证码这名小将。   ...如今验证码的战场怪相横生。接下来,我们介绍一下滑动验证码吧!...用户不用仔细辨认图形验证码上的符号,再手打输入答案...
  • js实现简单的验证码

    2019-10-03 16:41:23
     目前比较常见的验证码格式主要有三种:数字短信验证码、图形验证码、滑动验证码,下面我们就一起来看看这些验证码是怎么实现的。 1.数字短信验证码  数字短信验证码就是要求我们输入手机号码,然后获取手机收到...
  • 类似于登录、注册界面要判断登录账号是不是空,验证码是否正确等,怎么写比较舒服一点?... //业务需求 点击获取验证码的地方加上图形验证码,验证码输入成功之后 走网络请求的 if (checkArgument()) { ...
  • Web端一个简单的验证码制作

    多人点赞 2020-04-07 16:13:51
    做一个简单的Web图形验证码 先来说说为什么会有验证码这么个反人类的玩意 每次输入验证码 365°的都是错误 然后重新输入 随着时间的推移 验证码这玩意 越来越高级越来越难 某班的验证码还是汉字 简直了 但是呢 深处...
  • 它的“进化史”就是一部不断与黄牛和抢票软件“斗智斗勇”的历史,从一开始的简单数字、字母、加减法,到闪烁变形字母、干扰线变形字母,再到近些年不断优化的挑战人智商下限的图形验证码…… “确定我不是机器人?...
  • selenium登录网银,密码控件输入

    千次阅读 2019-05-15 13:04:00
    尝试登录农行网银,发现带控件的密码输入框怎么都无法输入...图形验证码识别没过,有时间再继续 需要安装 Tesseract-OCR IEdriver ,dd下载dll # _*_ coding: utf-8 _*_ import os, sys import uuid, time im...
  • 常规验证码picture 常规的验证码由数字和字母构成,用户输入不区分大小写,可变形成汉字验证。 运算验证码compute 运算验证码主要通过给出数字的加减乘运算,填写运算结果进行验证。 滑动验证码slide 通过简单的...
  •  Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。 2.效果展示             算术类型:       中文类型:       内置字体:       3.导入项目...
  • 1.图形验证码不能如图所示呈现 解决措施: 因为form组件中无法直接提交图片 1.右侧箭头的点击事件的设置是使用通知栏还是field 使用field,如果使用通知的话数据都是死的,没法改数据 2.密码输入两次就返回404错误,...
  • 20200521

    2020-05-22 10:00:36
    1、评价你目前测试的app 2、有哪些竞品app 3、功能测试与自动化测试的占比 ...5、简述时间戳,及时间戳的位数 ...12、模拟输入5次验证码,返回图形框的操作 13、日活~总用户数— (内部数据) 14、 ...
  • 2、运行launch.py启动爬虫,中途会要求输入验证码,查看项目路径下新生成的aa.png,输入验证码 回车,即可。 打码方式流程: 1、下载PhantomJS.exe,放在python的安装路径。 2、安装Python模块PIL(请自行百度,...
  • //用户输入验证码 System.out.println(session.getId()); ()); //我在这里打印出 当前的SessionID 现在发现 在Action 中的SessionID 和 验证码生成的JSP页面中的 SessionID 是不一样的 这样那么 (String)...
  • C#基础类库

    2018-07-11 08:45:26
    C#操作缓存的帮助类,实现了怎么设置缓存,怎么取缓存,怎么清理缓存等方法,只需要调用方法就可以实现 CookieHelper C#操作Cookie的帮助类,添加Cookie,删除Cookie,修改Cookie,清理Cookie SessionHelper C#...
  • jsp编程技巧集锦

    2008-03-19 17:23:17
    文本框怎么只容许输入数字? 66. 打开Word和Execl文件? 67. 生成Word 和 Excel文档? 68. JSP如何读取Word内容? 69. 浏览服务器目录/文件? 70. jsp直接弹出下载框下载文件? 71. 配置数据连接池和...
  • 9.4.2 图形界面口令输入的安全性 393 9.4.3文本界面口令输入的安全性 395 9.4.4 更加安全的文本界面口令输入方式 397 9.5基于身份的授权 400 9.5.1使用策略文件的基于身份授权 400 9.5.2使用编程方式的基于身份授权 ...
  • C#基类库(苏飞版)

    2014-05-16 23:11:45
    C#操作缓存的帮助类,实现了怎么设置缓存,怎么取缓存,怎么清理缓存等方法,只需要调用方法就可以实现 CookieHelper C#操作Cookie的帮助类,添加Cookie,删除Cookie,修改Cookie,清理Cookie SessionHelper C#...
  • asp.net知识库

    2015-06-18 08:45:45
    怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 在MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0)...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

怎么输入图形验证码