腾讯验证码接入

这篇具有很好参考价值的文章主要介绍了腾讯验证码接入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、官方文档

  1.  流程:验证码 快速入门-文档中心-腾讯云

  2.  sdk使用:Java-SDK 中心-腾讯云

  3.  接口地址:验证码 核查验证码票据结果(Web及APP)-服务器相关接口-API 中心-腾讯云

2、前端示例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web 前端接入示例</title>
    <!-- 验证码程序依赖(必须)。请勿修改以下程序依赖,如使用本地缓存,或通过其他手段规避加载,会导致验证码无法正常更新,对抗能力无法保证,甚至引起误拦截。 -->
    <script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
</head>

<body>
<button id="CaptchaId" type="button">验证</button>
</body>

<script>
  
      // 定义回调函数
      function callback(res) {
          // 第一个参数传入回调结果,结果如下:
          // ret         Int       验证结果,0:验证成功。2:用户主动关闭验证码。
          // ticket      String    验证成功的票据,当且仅当 ret = 0 时 ticket 有值。
          // CaptchaAppId       String    验证码应用ID。
          // bizState    Any       自定义透传参数。
          // randstr     String    本次验证的随机串,后续票据校验时需传递该参数。
          console.log('callback:', res);
  
  
          // res(用户主动关闭验证码)= {ret: 2, ticket: null}
          // res(验证成功) = {ret: 0, ticket: "String", randstr: "String"}
          // res(请求验证码发生错误,验证码自动返回terror_前缀的容灾票据) = {ret: 0, ticket: "String", randstr: "String",  errorCode: Number, errorMessage: "String"}
          // 此处代码仅为验证结果的展示示例,真实业务接入,建议基于ticket和errorCode情况做不同的业务处理
          if (res.ret === 0) {
            // 复制结果至剪切板
            var str = '【randstr】->【' + res.randstr + '】      【ticket】->【' + res.ticket + '】';
            var ipt = document.createElement('input');
            ipt.value = str;
            document.body.appendChild(ipt);
            ipt.select();
            document.execCommand("Copy");
            document.body.removeChild(ipt);
            alert('1. 返回结果(randstr、ticket)已复制到剪切板,ctrl+v 查看。 2. 打开浏览器控制台,查看完整返回结果。');
          }
      }
  
      // 定义验证码js加载错误处理函数
      function loadErrorCallback() {
        var appid = ''
        // 生成容灾票据或自行做其它处理
        var ticket = 'terror_1001_' + appid + Math.floor(new Date().getTime() / 1000);
        callback({
          ret: 0,
          randstr: '@'+ Math.random().toString(36).substr(2),
          ticket: ticket,
          errorCode: 1001,
          errorMessage: 'jsload_error'
        });
      }
  
      // 定义验证码触发事件
      window.onload = function(){
        document.getElementById('CaptchaId').onclick = function(){
          try {
            // 生成一个验证码对象
            // CaptchaAppId:登录验证码控制台,从【验证管理】页面进行查看。如果未创建过验证,请先新建验证。注意:不可使用客户端类型为小程序的CaptchaAppId,会导致数据统计错误。
            //callback:定义的回调函数
            var captcha = new TencentCaptcha('123', callback, {});
            // 调用方法,显示验证码
            captcha.show(); 
          } catch (error) {
            // 加载异常,调用验证码js加载错误处理函数
            loadErrorCallback();
            }
          }
      }
  </script>

</html>
  

将123改为自己的CaptchaAppId

caught error: 请勿多次引用腾讯验证码的接入js,java,腾讯云,阿里云,云计算

 3、后端示例

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.captcha.v20190722.CaptchaClient;
import com.tencentcloudapi.captcha.v20190722.models.*;

public class DescribeCaptchaResult
{
    public static void main(String [] args) {
        try{
            // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
            // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
            Credential cred = new Credential("SecretId", "SecretKey");
            // 实例化一个http选项,可选的,没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("captcha.tencentcloudapi.com");
            // 实例化一个client选项,可选的,没有特殊需求可以跳过
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品的client对象,clientProfile是可选的
            CaptchaClient client = new CaptchaClient(cred, "", clientProfile);
            // 实例化一个请求对象,每个接口都会对应一个request对象
            DescribeCaptchaResultRequest req = new DescribeCaptchaResultRequest();
            
            // 返回的resp是一个DescribeCaptchaResultResponse的实例,与请求对象对应
            DescribeCaptchaResultResponse resp = client.DescribeCaptchaResult(req);
            // 输出json格式的字符串回包
            System.out.println(DescribeCaptchaResultResponse.toJsonString(resp));
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
    }
}

4、示例代码

4.1 源码地址

share: 分享仓库 - Gitee.com

4.2 修改配置

修改application.yml,修改下面的四个参数 

caught error: 请勿多次引用腾讯验证码的接入js,java,腾讯云,阿里云,云计算

index.html修改,将123改为自己的CaptchaAppId

caught error: 请勿多次引用腾讯验证码的接入js,java,腾讯云,阿里云,云计算 

 4.3 访问

访问地址:http://localhost:8080/index.html

caught error: 请勿多次引用腾讯验证码的接入js,java,腾讯云,阿里云,云计算 

验证成功后,前端获得下面两个参数

caught error: 请勿多次引用腾讯验证码的接入js,java,腾讯云,阿里云,云计算 

 传入后端,判断是否校验通过,通过后走其他业务

public Boolean checkCaptcha(SendSmsReqVO sendSmsReqVO) {
    // 实例化一个请求对象,每个接口都会对应一个request对象
    DescribeCaptchaResultRequest req = new DescribeCaptchaResultRequest();
    req.setCaptchaAppId(captchaProperties.getCaptchaAppId());
    req.setAppSecretKey(captchaProperties.getAppSecretKey());
    req.setCaptchaType(captchaProperties.getCaptchaType());
    req.setRandstr(sendSmsReqVO.getRandstr());
    req.setUserIp(ipUtils.getIpAddr());
    req.setTicket(sendSmsReqVO.getTicket());
    try {
        // 返回的resp是一个DescribeCaptchaResultResponse的实例,与请求对象对应
        DescribeCaptchaResultResponse resp = client.DescribeCaptchaResult(req);
        log.info("UserServiceImpl checkCaptcha resp:{}", JSON.toJSONString(resp));
        if (CaptchaCodeConstant.OK.equals(resp.getCaptchaCode())) {
            return true;
        }
        return false;
    } catch (TencentCloudSDKException e) {
        log.error("UserServiceImpl checkCaptcha error:", e);
        return false;
    }
}


 文章来源地址https://www.toymoban.com/news/detail-597596.html

到了这里,关于腾讯验证码接入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用于读取验证码的 OCR 模型

    此示例演示了使用功能 API 构建的简单 OCR 模型。除了结合 CNN 和 RNN 之外,它还说明了如何实例化新层并将其用作“端点层”来实现 CTC 损失。 我们来下载数据。

    2024年02月06日
    浏览(28)
  • 织梦DedeCms取消后台登陆验证码的方法示例

    首先模拟会员登录和退出,有两个重要文件,一个是include下的memberlogin.class.php和include/helpers下的cache.helper.php文件。 原理为:memberlogin.class.php通过使用缓存助手 helper(\\\'cache\\\'),然后/member/config.php 文件引入memberlogin.class.php文件实现模拟登录和退出。 模拟会员登录代码 引入/memb

    2024年02月02日
    浏览(32)
  • Selenium破解滑动验证码的原理及解决思路

    🍅 视频学习: 文末有免费的配套视频可观看 🍅  点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快  1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpa

    2024年02月20日
    浏览(36)
  • Jmeter接口测试 —— jmeter对图片验证码的处理

    在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用; 1、通过ocrserver工具识别图片验证码; 如下图:解压后双击OcrServer.exe;然后电脑的右下角

    2024年02月05日
    浏览(40)
  • 使用Selenium破解滑动验证码的原理及解决思路

    1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpath、CSS选择器等)来找到这些元素。 可以使用find_element_by_xpath或find_element_by_css_selector等方法来获取滑块和背景图元素的位置和

    2024年02月09日
    浏览(38)
  • Python爬虫之极验滑动验证码的识别

    上节我们了解了可以直接利用 tesserocr 来识别简单的图形验证码。近几年出现了一些新型验证码,其中比较有代表性的就是极验验证码,它需要拖动拼合滑块才可以完成验证,相对图形验证码来说识别难度上升了几个等级。本节将讲解极验验证码的识别过程。 1. 本节目标 我们

    2024年02月22日
    浏览(38)
  • 使用隧道HTTP时如何解决网站验证码的问题?

    使用代理时,有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时,由于请求的源IP地址被更改,可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法: 1. 使用高匿代理服务器:选择高匿代理服务

    2024年02月14日
    浏览(27)
  • Python scrapy爬取带验证码的列表数据

    首先所需要的环境:(我用的是Python2的,可以选择python3,具体遇到的问题自行解决,目前我这边几百万的数据量爬取) 环境: 直接贴代码具体需要注意的特殊颜色标出有注释 pipelines存数据库这个就不说了根据自己的业务 注:目前我网站验证码比较简单可以直接使用pytess

    2024年01月18日
    浏览(28)
  • DedeCMS织梦自定义表单增加验证码的实例代码

    DedeCMS织梦验证码主要的作用就是防止一些用户的恶意提交,在很多的地方都会有验证码的出现,自定义表单也是在很多的地方都需要用到,但是默认的自定义表单是没有验证码的,这里介绍的方法就可以让大家自己添加验证码的功能。   1、先进入DedeCMS后台生成自定义表单。

    2024年02月03日
    浏览(28)
  • 【开发篇】十、Spring缓存:手机验证码的生成与校验

    缓存是一种 介于数据永久存储介质与数据应用之间 的数据 临时存储 介质 使用缓存可以有效的 减少低速数据读取过程的次数(例如磁盘IO) ,提高系统性能 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以 提供临时的数据存储空间 注意最后这条, 缓存的不一

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包