基于阿里云短信服务的防机器人验证

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 基于阿里云相关产品和服务实现一个手机验证码登录的功能,防止机器人批量注册,服务端采用阿里云ECS服务器,程序语言选用JAVA,服务器软件选用Tomcat,应用服务采用阿里云短信服务,

基于阿里云短信服务的防机器人验证

1.  创建资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息

2.  登录ECS服务器

本次实验我们会学习通过API发送短信,简单的JS脚本等开发技能。

实验资源包含一台ECS服务器,使用的是Windows系统,镜像中包含IDEA开发工具,登录ECS后便可以编写代码学习短信发送等具体知识。

这一小结,我们首选要登录上ECS服务器,假设学员正在使用Winodws7或以上系统。

  1. 打开win远程连接工具
  1. 通过快捷键“Win标徽键+R键”调出运行窗口。
  2. 在运行窗口中输入mstsc,单击确定

  1. 登录服务器需要先输入服务器IP地址
  1. 将实验资源处的云服务器ECS的弹性IP复制到win远程连接工具上。
  2. 单击连接按钮

  1. 登录服务器还需要输入服务器的用户和密码
  1. 在上一步弹出的对话空中,依次输入云服务器ECS的用户名和密码。
  2. 单击确定按钮

注意:由于学员电脑可能有不同的Windows版本,界面可能略有不同

  1. 登录服务器成功
  1. 上一步点击确定后,可能会弹出如下图所示对话框,直接点击即可登录成功

  1. 打开IDEA开发工具
  1. 在远程窗口中,双击桌面的IDEA图标

注意:如有使用有效期提醒使用yqsys2023和Yqsys@2023#登录试用

3.  使用JAVA和短信服务API发送短信

这一小结我们学习如何用IDEA工具编写JAVA程序调用阿里云API发送短信

重要提醒:本实验每用户短信接收上限为4条,请勿反复尝试,正常情况2条短信即可完成实验

  1. 创建一个Java类
  1. 依次展开src>main>java>com.....目录
  2. 在最后一级目录上单击右键>再单击新建>再单击Java类
  3. 再弹出的对话框中输入类的名字SMSDemo,然后直接回车

  1. 在SMSDemo类中创建主方法。
  1. 在类名后面大括号后输入main,随后直接回车,会自动生成一个标准的主方法

main方法也叫主方法,是一个程序执行的起点。在SMSDemo类中,只需要键入main四个字母IDEA就会提示是否需要完整的主方法,这时按下回车键,一个完整的主方法就编写好了,

  1. 查看Sendsms类关于发送短信的代码逻辑
  1. 双击左侧Sendsms文件,右侧就会打开这个文件的内容
  2. 仔细查看截图,下一步只需要调用Sendsms的send方法就可以发送短信了

  1. 在SMSDemo类中编写发送短信的代码
  1. 如图所示在主方法小括号后添加异常抛出throws Exception
  2. 如果所示在主方法大括号内添加Sendsms.send("18627162842",1234);  含义为调用Sendsms的send方法,并传入你自己的手机号码和一个随机的验证码

  1. 在SMSDemo类中执行发送短信的程序
  1. 在空白处单击右键,在弹出的菜单中,单击运行’SMSDemo.main()‘的选项
  2. 观察程序运行结束后的提示
  3. 此时你的手机上会收到一条测试短信

至此,本小节发送短信的功能学习结束

4.  学习原生JS和正则表达式

这一小节学习原生JS和正则表达式

  1. 首选创建一个html文件
  1. 依次展开src>main>webapp目录
  2. 依次执行右键单击webapp、单击新建、单击HTML文件
  3. 在弹出的对话框中给新建的html文件取个名字,如demo

  1. 在新建的html文件中插入一段代码,并学习代码含义
  1. 将如下代码插入到<body></body>标签内,并仔细查看代码中注释的含义
<!--script内是JS原生代码-->
<script>
    //这是一个函数,当页面按钮被点击时会被触发调用
    function vcdisplay() {
        //获取到页面的文本输入框输入的内容,取名叫做tel
        var tel = document.getElementById("tel").value;
        //设置一个正则表达式的规则,用regPhone表示,规则是第一位数字是1,后面有且只能有10位数字
        var regPhone = /[1]{1}[0-9]{10}/;
        //当按钮点击时,如果文本框内什么也没有输入,则提示“请输入手机号码”
        if (tel === "") {
            alert("请输入手机号码")
            return;
            //如果文本框内的内容不符合正则表达式规则,则提示手机号格式错误
        } else if (!regPhone.test(tel)) {
            alert("手机号格式错误");
            return;
        }
    }
</script>
<!--这是一个文本输入框,用来输入电话号码-->
<input id = "tel" name="tel" placeholder="手机号" type="text">
<!--这是一个按钮当点击按钮的时候会调用vcdisplay()这个自定义js函数-->
<button onclick="vcdisplay()" type="button">获取验证码</button>

  1. 测试页面效果
  1. 在空白处单击鼠标右键
  2. 在弹出的菜单中单击运行’demo.html‘
  3. 在显示的页面中依次尝试如下操作,并体会代码的执行逻辑
  1. 不输入任何内容,直接点击按钮,会提示请输入手机号码
  2. 输入10位号码,点击按钮,会提示手机号码格式错误
  3. 输入11位号码,但是第一位是4,也会提示手机号码格式错误
  4. 输入一个1开头,后面有且只能有10位的数字,就不会报错了

最后关闭浏览器,本小节知识学习完毕

5.  服务代码开发和学习

这一小节学习服务端开发的开发,本小节无需编写代码,理解已经编写好的代码即可

  1. 打开VCser文件,当有用户输入姓名和电话后点击获取验证码的时候,会来到doGet方法具体的执行流程如下
  1. 创建一个临时的键值对存储集合,用来存储电话和验证码的对应关系
  2. 当用户点击获取验证码的时候,会来到如下doGet请求(也可以叫做doGet方法)
  3. 在doGet方法内首先会获取用户输入的姓名和电话
  4. 然后随机生成一个4位数,用作验证码,范围1000~9999
  5. 将以上姓名、电话、验证码在控制台打印出来,这个内容在用户界面是无法看到的
  6. 调用发送短信的方法,给用户的电话发送短信附带验证码
  7. 将验证码存储到集合备用

  1. 依旧在VCser文件中,往下滚动可以看到doPost请求。
  1. 当用户填写好验证码,并点击提交按钮时,会来到doPost方法,
  2. doPost方法中首先会获取用户输入的姓名电话和验证码
  3. 将电话和验证码在上面的集合中查询,如果存在则返回一个登录成功的页面
  4. 如果查询不存在,则返回一个登录失败的页面

这一小结,不需要实操,学习代码逻辑即可

6.  短信验证码登录测试

这一小节我们完成验证码登录的测试环节

  1. 首先要将我们的项目添加到web服务中去
  1. 单击下面服务按钮
  2. 单击左侧菱形工件按钮
  3. 在弹出的对话框中选中yzm1226:war文件
  4. 单击添加,随后会看到yzm1226:war移到右边了
  5. 单击确定

  1. 开启web服务
  1. 单击左边三角形按钮,开启服务
  2. 观察下方右侧打印的日志页面
  3. 大约5~10秒后,服务已开启,会自动打开浏览器,显示如图页面

  1. 获取验证码
  1. 输入正确的姓名和正确的手机号码
  2. 单击获取验证码按钮
  3. 大约2~3秒后会看到验证码发送成功,同时手机上会看到验证码
  4. 输入验证码尝试登录

注意:在下方控制台日志打印窗口也可以看到验证码的日志信息

重要提醒:本实验每用户短信接收上限为4条,请勿反复尝试,正常情况2条短信即可完成实验

  1. 点击提交后查看登录效果,如果电话号码和验证码输入无误,则会提示登录成功,否则登录失败

至此,实验结束,学员可以自行查看

index.html

VCser文件内的服务端业务逻辑,

实验链接:https://developer.aliyun.com/adc/scenario/982742f4c8a24a0f84c5608475a959d5

相关文章
|
2月前
|
云安全 安全 API
阿里云——OpenAPI使用——短信服务
阿里云——OpenAPI使用——短信服务
155 0
|
4月前
|
安全
阿里云短信服务是可以发送包含下载链接的文本内容的,
阿里云短信服务是可以发送包含下载链接的文本内容的,但是需要注意以下几点:
227 1
|
2月前
|
缓存 数据可视化 安全
开发阿里云 RPA 机器人的技巧
在当今数字化时代,机器人流程自动化(RPA)技术正逐渐成为企业提高效率和优化业务流程的重要手段。阿里云 RPA 作为一种强大的工具,为开发高效的机器人提供了丰富的功能和支持。本文将分享一些开发阿里云 RPA 机器人的技巧,帮助您更好地利用该平台的能力。
|
2月前
|
存储 监控 安全
阿里云云通信短信服务安全之安全架构
阿里云云通信长期致力于通过多种渠道向客户透明服务相关情况。客户一般可通过阿里云官网提出对阿里云云通信相关资质、服务使用情况、产品说明等信息,我们将7*24小时不间断处理您的建议与咨询。对于客户合理的要求,阿里云云通信服务团队均会及时响应客户的需求。同时,阿里云云通信也在探索更多增加透明度的方式,如对公邮箱、线上查询接口、钉钉服务客户群等。
|
2月前
|
运维 监控 安全
阿里云云通信短信服务安全之安全责任共担与安全合规
阿里云云通信长久以来致力于为客户提供稳定可靠、安全可信、合法合规的通信服务,利用先进技术、建立产品体系、严格管理人员等不同手段以保护客户及合作伙伴数据的机密性、完整性、可用性,以数据安全、用户隐私保护作为阿里云云通信的最高准则。
|
3月前
|
移动开发 JavaScript
简单介绍下阿里云的H5滑动验证+H5示例源码
简单介绍下阿里云的H5滑动验证+H5示例源码
42 0
|
3月前
|
JSON 机器人 数据格式
阿里云RPA支持将序列化的JSON数据作为输入参数传递给机器人应用程序
【1月更文挑战第7天】【1月更文挑战第33篇】阿里云RPA支持将序列化的JSON数据作为输入参数传递给机器人应用程序
206 1
|
3月前
|
人工智能 自然语言处理 搜索推荐
基于阿里云向量检索服务搭建AI智能问答机器人
基于阿里云向量检索服务搭建AI智能问答机器人
123289 38
|
3月前
|
JSON 开发工具 数据格式
App Inventor 2 接入阿里云短信服务,实现短信验证码功能
App Inventor 2 接入阿里云短信服务,实现短信验证码功能:发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发。
115 1
|
4月前
|
Java Maven
(短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码
(短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码
669 0

热门文章

最新文章