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

本文涉及的产品
国际/港澳台短信套餐包,全球plus 100条 6个月
短信服务,100条 3个月
数字短信套餐包(仅限零售电商行业),100条 12个月
简介: 基于阿里云相关产品和服务实现一个手机验证码登录的功能,防止机器人批量注册,服务端采用阿里云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
阿里云短信服务文档与实际API不符
阿里云短信服务文档与实际API不符
|
3月前
|
数据采集 监控 安全
阿里云短信服务+图形认证,有效降低验证码盗刷概率
阿里云短信服务+图形认证服务,有效降低验证码盗刷概率。
283 3
阿里云短信服务+图形认证,有效降低验证码盗刷概率
|
1月前
|
安全 Java API
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
|
6月前
|
存储 小程序 前端开发
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
501 0
|
4月前
|
数据采集 存储 监控
99%成功率背后:阿里云短信服务有何优势?
为什么短信会发送失败,如何提高短信发送成功率,本文将为您介绍短信发送成功率和阿里云短信服务如何保障企业短信稳定送达等相关知识。
205 1
99%成功率背后:阿里云短信服务有何优势?
|
3月前
|
存储 NoSQL Java
|
4月前
|
存储 安全 网络安全
|
5月前
|
开发框架 前端开发 JavaScript
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
|
4月前
|
小程序
阿里云短信签名申请流程,有图,短信接入新手教程
阿里云短信签名是短信中的标识信息,如【阿里云】,用于表明发送方身份。申请流程简便:登录阿里云短信服务控制台,选择签名管理并添加签名,填写相关信息。审核通常2小时内完成。个人用户每日限申请一个通用签名,企业用户数量不限。已通过审核的签名不可更改名称,仅能调整其他信息并重新提交审核。更多详情及FAQ
|
4月前
|
小程序
阿里云短信签名申请流程,手动整理(附短信签名问题解答)
阿里云短信签名是短信中的标识信息,如【阿里云】,用于表明发送方身份。申请流程简便:登录阿里云短信服务控制台,选择国内消息下的签名管理并添加签名,按指引填写表单。审核通常2小时内完成。个人用户每日限申请一个通用签名,企业用户数量不限。签名审核需确保业务主体一致,已通过审核的签名不可改名,仅能调整其它信息并重新审核。特定情况下需上传授权委托书,且签名需关联已备案网站。
497 1