完整电商项目--(三)验证码操作(2):短信验证码

chatgpt赋能python:Python如何免费群发短信 在Python中,我们可以使用短信平台提供的免费API接口来实现短信的群发。下面以云片网为例,介绍使用Python免费群发短信的步骤。首先,需要注册一个云片网的账号,注册完成后登录到云片网的后台管理系统,选择“短信API”功能,即可获得短信API的“APIKEY”。接下来,在Python中引用“requests”和“json”两个模块,根据云片网提供的API接口文档,编写代码实现短信群发功能。 阅读详情

短信验证码

操作流程

  • 首先django是不能实现 发送短信验证码的,所以我们要 借助第三方 操作短信验证码。
  • 这里选择 容联云通讯短信平台 实现第三方的 发送短信验证码码

容联云通讯短信平台网址

先来说下整个业务流程

  • (1) 浏览器请求后端 获取短信验证码
  • (2) 后端验证通过(我们这里的验证就是,必须它输入上节中讲的,正确的图像验证码),后端开始生成随机的 六位验证码, 并将短信验证码,保存进redis。 还是存储为 string类型, key 就是用户的手机号(前端传递),值就是这个验证码
  • (3)通过调用 第三方平台发送短息验证码给用户
  • 这就是业务逻辑,同样验证就不说了,读取redis然后和 前端传递的数据进行对比验证,响应。

容联云通讯短信平台的使用及对接流程

  • 其实这一部分是最重要的,因为一个好的平台为了让我们去使用他的功能,一定会想尽办法写出 详细的对接 文档。 这正是锻炼了我们 对接心新事物的 处理能力,以及阅读文档的能力。

  • (1)首先点击上面的链接,注册用户,进入首页:可以看到开发者的主账号
    在这里插入图片描述

  • 点击下方的短信:
    在这里插入图片描述
    便会出现我们想要的接入的文档教程

  • (3)点击免费测试指南:因为我们是学习使用,所以使用测试即可()测试账号不花钱~ 真的业务账号,每条短信要收费在这里插入图片描述

  • (4)接着点击短信业务接口:(这个就是 我们接入 这个平台的接口介绍说明,细心是可以看懂的)
    在这里插入图片描述
    我们看到他会对接口进行说明。以及必要的参数。

  • 我们可以阅读了解。但是这不是我们重点关心的。因为我们不回去直接使用这些接口内部的 地址链接啥的。 第三方为了方便用户使用,当然是封装好了 响应的python代码 包。我们直接调用它,并不用细节的去关心内部的实现了~ (不过我我当时是看完了这个文档,可以理解下别人的业务编写逻辑,以及业务规范)

  • (5)找到DEMO实例,我们需要关心这个
    在这里插入图片描述
    文章首页便有这个下载:
    在这里插入图片描述
    对应各个版本:
    在这里插入图片描述

  • (6)我们就下载下来这个DEMO实例,然后关心这几个才是发送短信验证码的关键参数:
    在这里插入图片描述
    整个例子的代码:

 编码说明:coding=utf-8或gbk
 from CCPRestSDK import REST
 import ConfigParser
 
 accountSid= '您的主账号'; 
 #说明:主账号,登陆云通讯网站后,可在控制台首页中看到开发者主账号ACCOUNT SID。
 
 accountToken= '您的主账号Token'; 
 #说明:主账号Token,登陆云通讯网站后,可在控制台首页中看到开发者主账号AUTH TOKEN。
 
 appId='您的应用ID'; 
 #请使用管理控制台中已创建应用的APPID。
 
 serverIP='app.cloopen.com';
 #说明:请求地址,生产环境配置成app.cloopen.com。
 
 serverPort='8883'; 
 #说明:请求端口 ,生产环境为8883.
 
 softVersion='2013-12-26'; #说明:REST API版本号保持不变。 
 
 # 这个就是自己定义的,用来发送短信验证码的 函数了
 def sendTemplateSMS(to,datas,tempId): 
    #初始化REST SDK
    rest = REST(serverIP,serverPort,softVersion) 
    rest.setAccount(accountSid,accountToken) 
    rest.setAppId(appId)
 	
 	# 调用REST父类中定义好的,发送函数
    result = rest.sendTemplateSMS(to,datas,tempId) 
    for k,v in result.iteritems():
        if k=='templateSMS' : 
                for k,s in v.iteritems():
                    print '%s:%s' % (k, s) 
        else: 
            print '%s:%s' % (k, v) 
 
 可参考demo中的接口调用文件:SendTemplateSMS.py。
  • 他提示我们参考SendTemplateSMS.py,那么我们就去看看,源代码是如何实现的。
    在这里插入图片描述
    开头引入的这个 库,当然就是用来请求我们 上面 看到的短信业务接口啦。
    在这里插入图片描述
    接着就是初始化的相关信息。

往下找就是关键的发送函数了!:

    # 发送模板短信
    # @param to  必选参数     短信接收彿手机号码集合,用英文逗号分开
    # @param datas 可选参数    内容数据
    # @param tempId 必选参数    模板Id
    def sendTemplateSMS(self, to, datas, tempId):

        self.accAuth()
        nowdate = datetime.datetime.now()
        self.Batch = nowdate.strftime("%Y%m%d%H%M%S")
        # 生成sig
        signature = self.AccountSid + self.AccountToken + self.Batch
        sig = md5(signature.encode()).hexdigest().upper()
        # 拼接URL
        url = "https://" + self.ServerIP + ":" + self.ServerPort + "/" + self.SoftVersion + "/Accounts/" + self.AccountSid + "/SMS/TemplateSMS?sig=" + sig
        # 生成auth
        src = self.AccountSid + ":" + self.Batch
        # auth = base64.encodestring(src).strip()
        auth = base64.encodebytes(src.encode()).decode().strip()
        req = urllib2.Request(url)
        self.setHttpHeader(req)
        req.add_header("Authorization", auth)
        # 创建包体
        b = ''
        for a in datas:
            b += '<data>%s</data>' % (a)

        body = '<?xml version="1.0" encoding="utf-8"?><SubAccount><datas>' + b + '</datas><to>%s</to><templateId>%s</templateId><appId>%s</appId>\
            </SubAccount>\
            ' % (to, tempId, self.AppId)
        if self.BodyType == 'json':
            # if this model is Json ..then do next code
            b = '['
            for a in datas:
                b += '"%s",' % (a)
            b += ']'
            body = '''{"to": "%s", "datas": %s, "templateId": "%s", "appId": "%s"}''' % (to, b, tempId, self.AppId)
        req.data = body.encode()
        data = ''
        try:
            res = urllib2.urlopen(req)
            data = res.read()
            res.close()

            if self.BodyType == 'json':
                # json格式
                locations = json.loads(data)
            else:
                # xml格式
                xtj = xmltojson()
                locations = xtj.main(data)
            if self.Iflog:
                self.log(url, body, data)
            return locations
        except Exception as error:
            if self.Iflog:
                self.log(url, body, data)
            return {'172001': '网络错误'}

    # 外呼通知
    # @param to 必选参数    被叫号码
    # @param mediaName 可选参数    语音文件名称,格式 wav。与mediaTxt不能同时为空。当不为空时mediaTxt属性失效。
    # @param mediaTxt 可选参数    文本内容
    # @param displayNum 可选参数    显示的主叫号码
    # @param playTimes 可选参数    循环播放次数,1-3次,默认播放1次。
    # @param respUrl 可选参数    外呼通知状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。
    # @param userData 可选参数    用户私有数据
    # @param maxCallTime 可选参数    最大通话时长
    # @param speed 可选参数    发音速度
    # @param volume 可选参数    音量
    # @param pitch 可选参数    音调
    # @param bgsound 可选参数    背景音编号

代码整体上不算难,写法上比我好~哈哈。 仔细看,每一步都是可以看懂的!

  • 里面的拼接 url ,正是我们看到在 短信接口文档里 看到的 url!
  • 我们再次看到那个文档
    在这里插入图片描述
    json格式下的表示,这个给我们返回了很多的信息! 只需要重点关心第一个状态码:000000 表示响应成功~

到这里就差不多结束啦~ 我们已经可以发送短信验证码了,但是观察,里面有几个初始化参数我们不知道?? 只需要查看一下, 创建一个应用就可以了!
在这里插入图片描述

到这里就结束了~ 不过还有一些优化要做。 比如单单这个例子,用一个简单的 函数实现发送验证码,并不能满足 正式的企业需要。 所以我们下一节补充:

通过调用 sendTemplateSMS(self, to, datas, tempId) 短信发送函数,自己写一个 发送短信的类,提升性能。 具体会 使用到:单例模式

我们在充分理解的情况下,就应该有能力做到灵活运用这个 接口函数, 去实现自己的小需求,毕竟 DEMO中的 代码只有短短的 40行。

over!

补充:
在这里插入图片描述
东西总是进步的,这个模块处理直接 pip 安装即可! 方便快捷啊~ 比传统的方面很多。

短信验证码与短信验证码API&SDK接口 短信验证码一般两种发送方式,用于用户注册、身份确认、重要资料修改及相关通知的场景,特别是存在于电商平台,无论是APP还是网站注册的时候都会使用短信验证码,因为验证了手机,商家就有获得两项好处,一是绑定了有效用户,二是防止别人恶意注册。另外的就是我们常见的通知类短信验证码,如银行给我们发的短信,我们取钱存钱的时候都有,这类就是属于安全类通知短信;另一个就是大企业统一通知员工开会或者面试,当你选择了短 阅读详情

相关推荐

OTP(一次性密码)和短信验证码有什么区别?

OTP ,全称 One-Time Password,是一个动态生成的、随机的、一次性的数字或字母,可以用于验证用户的身份,从而授予用户访问权限。* 场景描述:当用户忘记密码并请求重置时,系统会发送 OTP 到用户的注册手机或邮箱,用户需输入该 OTP 以验证身份并重置密码。* 场景描述:用户在电商平台进行支付或修改账户信息时,平台会发送 OTP 到用户的手机或邮箱,用户需输入该 OTP 以确认操作。* 场景描述:在访问政府提供的在线服务(如税务、社保等)时,用户需输入 OTP 以验证身份。

baidu_25922265的博客 6082

C2C虚拟卡牌交易网站——仿steam社区市场项目源码

本项目基于Spring Boot和Vue3框架开发,采用前后端分离架构,实现了一套完整的业务系统。

2301_80456153的博客 475

华为帐号服务升级,提供通用短信验证码读取能力

目前,在电商、金融、社交等多种行业的APP中,”帐号+短信验证码“这种验证方式已成为验证用户身份的主流。短信验证具有易操作、安全性高、成本低的优势,在用户注册、登录、绑定手机号等许多场景中,都得到了普遍应用。 以往,用户靠手动完成手机号验证,至少需要5步:退出程序>打开收到的短信>复制或记住验证码>打开程序>粘贴或输入验证码。 华为帐号服务为开发者提供了短信自动读取能力。可以将这些步骤简化为一步,甚至完全省略,提高验证效率。如果您的应用需要用户输入手机号并通过短信验证码核实用户身份,

华为开发者联盟 3405

sendtemplatesms.php,基于PHP实现商品成交时发送短信功能

最近做了一个项目,其中有需求,要求我们实现此功能:商品成交时发送短信,下面小编贴出核心代码,方面大家以后学习。html代码省略.....Model代码省略.....核心代码如下所示:/** -------------------------------------------------* 修改状态 public* Author: lzp Time:--* --------------------...

weixin_31807925的博客 238

电商项目中的短信发送功能模块设计与实现

短信功能模块作为现代通信应用中不可或缺的一部分,能够为用户提供即时、便捷的信息传递手段。本章节将简单介绍短信功能模块的基本概念、其在应用中的重要性,以及实现短信功能的常见技术手段。首先,我们将回顾短信模块的历史发展,从最初的简单消息传输到现在集成了多媒体内容的富通信服务(RCS),技术的进步使得短信服务功能愈发强大。随后,我们会探讨短信功能模块在不同场景下的应用,如用户验证、紧急通知、营销推广等。了解这些基础知识,对于接下来深入探讨短信API集成、核心功能实现以及安全性和用户体验等关键部分至关重要。

weixin_32102617的博客 1111

niushop3短信插件:验证码服务与营销解决方案

在互联网时代,短信服务成为用户与企业交互的重要手段。对于电商平台而言,niushop3短信插件的应用场景十分广泛,它不仅提供了一种便捷的通讯方式,还能极大地提升用户体验和业务流程的效率。本章节将深入探讨niushop3短信插件的功能特点,以及它在不同应用场景中的实际表现。niushop3短信插件的短信发送机制是其核心功能之一。该插件支持多种短信服务提供商,如阿里云、腾讯云等,可以根据实际业务需求选择合适的短信服务商。插件集成了高效稳定的发送接口,保证了短信的快速发送。

weixin_29840475的博客 995

【干货】验证码的常见类型总结

验证码是一种区分用户是计算机和人的公共全自动程序。简单来说,验证码就是验证操作是人还是机器。下面我就总结一下常见的验证码类型都有哪些?

qq_37015930的博客 820

15行Python代码实现免费发送手机短信推送消息功能

实现的功能: 通过代码定时给手机推送短信,短信内容可以自定义文字,当然你也可以去别的网站爬取每日心灵鸡汤,天气预报或其它信息进行推送。关于爬取数据可以参考:Python40行代码实现天气预报和每日鸡汤推送 本文主要讲如何实现发送短信的功能,全部代码只用15行。 首先贴出实现的效果图,后面再分两步详细描述实现过程,第一步免费注册api接口,第二步只需要写10来行代码。 代码运行后本地收到返回的执行情况: 手机收到代码发送过来的短信截图: 实现过程: 1、免费注册获取发送短信的api接口 我们需要API的三个参数:account_sid ,auth_token 和Active number

Python免费发短信

from twilio.rest import Client account_sid = "AC29f5dbfe0cbf84efdbed96832b7a5bc4" #初始界面显示的账号id auth_token = "8f******" #初始界面现实的token,用于验证账号 client = Client(account_sid,auth_token) #生成一个客户端对象 pr...

zr7116的博客 1048

Claude AI实战指南:从注册到精通,突破手机验证的终极解决方案

本文提供了一份详尽的Claude AI实战指南,重点解决了国内用户注册过程中的手机号验证难题,并分享了使用技巧。文章详细介绍了如何通过虚拟手机号服务等方案完成注册,并深入解析了Opus、Sonnet、Haiku三大模型的特点与选择策略,帮助用户从注册到精通,高效利用这一安全、健谈的AI助手进行内容创作、编程开发与学习研究。

weixin_29092031的博客 1229

USB2.0学习1--基本概念

USB全称是 Universal Serial Bus,即通用串行总线,是一种计算机与外围设备进行数据交互的串行通信标准。USB协议是在1994年底由英特尔、IBM、Microsoft等公司联合提出的,现由USB协会(USB-IF)管理。USB使用差分信号来传输数据,具有传输速度快、支持热插拔、连接灵活、独立供电、协议向下兼容等优点,目前应用十分广泛。

原海青木的博客 3758

RSS订阅 原创 完整电商项目--(三)验证码操作(2):短信验证码--补充 :单例模式

什么是单例模式 我们节选一段网上的话:单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 举个例子,就像我们新定义一个类,去发送短信验证码。一个用户请求时会创建一个实例对象去处理。多个用户请求时,便会创建多个实例对象去处理。这大大的占用了内存空间,严重浪费内存资源。 所以我们要做的,就是实现单例设计模式,我们希望在程序运行期间只存在一个发送验证码类的实例对象。 如何

pythonstrat的博客 358

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试,核心思路是通过,验证 GPU 服务器在计算、显存、网络等维度的承载能力,同时观察稳定性与性能瓶颈。

weixin_42795092的博客 1608

完整电商项目--(三)验证码操作(3):短信验证码 -- cerely-RabbitMQ实现异步

什么是cerely 这个在之前的项目中已经讲过了 有兴趣大家可以查看 另外任务队列作为中间人(broker), 当时使用的是redis 主要就是三部分: 生产者:我们的代码,制造任务 中间人:任务队列(很多可以充当)接受任务 工人: 执行任务 ...

pythonstrat的博客 739

告别Selenium!纯Python+Requests搞定微信视频号登录Cookie(附完整代码与避坑指南)

本文详细介绍了如何利用纯Python和Requests库实现微信视频号的自动化登录,替代传统的Selenium方案。通过解析HTTP请求交互流程,提供完整的代码实现和避坑指南,显著提升爬虫效率和隐蔽性,适用于轻量化爬虫开发。

weixin_30642561的博客 310

Python中的字典(Dictionary)学习

上一章节,我们学习了列表(List) 和 元组(tuple) 来表示有序集合。而我们在讲列表(list)的时候,我们用了列表(list) 来存储用户的姓名。那么如果我们为了方便联系这些童鞋,要把电话号码也添加进去,该怎么做呢?但是这样很不方便,我们把电话号码记录下来,就是为了有什么事能及时联系上这些童鞋。如果用列表来存储这些,列表越长,我们查找起来耗时就越长。

热情、奔放、快乐编程! 502

利用阿里云短信验证码登录

这段时间准备做一个电商网站的小项目,在登录这方面,我想跟现在主流的登录想做成相似的功能,比如利用手机验证码登录,或者是扫描二维码登录,然后就在就在网站找了点资料今天来分享下,一来是给自己做个笔记,以后在想做类似的功能也方便点,再者如果有想做类似功能的可用参考我的方法,其实流程挺简单的,但是自己在上面走了点弯路,浪费了时间。 一、手机短信登录 1、首先需要找到一个短信服务的平台 我在做以...

qq_41965731的博客 2749

【麒麟系统】Rsync文件复制与同步工具

本文摘要: Rsync是一款Linux/Unix系统标配的高效文件同步工具,支持增量传输、SSH加密、断点续传等核心功能,相比SCP具有显著优势。文章详细解析了Rsync的五种标准语法格式和常用参数组合,重点介绍了本地同步、远程SSH同步(推送/拉取)的实操方法,并提供了密钥免密登录配置方案。针对企业运维场景,还讲解了文件过滤、镜像同步(--delete)、迁移同步(--remove-source-files)、空运行预校验(--dry-run)等高级功能,以及带宽限速等优化技巧,帮助用户安全高效地完成各类

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 997

使用短信发送注册时的验证码【高并发电商秒杀开发项目】

使用短信发送注册时的验证码【高并发电商秒杀开发项目】

小心星的博客 145

OBC_开环扫频波特图拟合操作流程(结合 Simulink)

摘要: 本文详细介绍了基于Simulink的开环扫频波特图测试与拟合流程,适用于电源/控制系统(如LLC/PFC)的小信号分析。主要内容包括:1)前期准备(测试点选择、信号范围设定);2)Simulink建模方法(信号注入、数据记录);3)两种扫频方式(逐频正弦/Chirp扫频)的实现;4)MATLAB数据处理(FFT分析、传递函数拟合);5)线性分析工具使用技巧。重点强调了激励信号幅值控制、稳态数据采集及模型验证方法,并提供完整MATLAB脚本示例。该流程可有效获取系统频域特性,为控制器设计提供可靠依据。

Sumerking的博客 232

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

android短信验证码方案,Android开发之属于你的短信验证码(一)

不飞则已,一飞冲天;不鸣则已,一鸣惊人---------司马迁最近工作又有新需求,要求用户在注册的时候需要通过手机验证码,这样做的目的是防止用户通过一个邮箱来随便的注册,那么好,今天我们就 一起来学习一下Android中的短信验证码这一个知识点。如有谬误,欢迎批评指正,如有疑问欢迎留言,谢谢在说这个知识点前,我们首先来了解下聚合数据一、聚合数据介绍聚合数据是一家国内最大的基础数据API提供商,专业...

weixin_35411487的博客 3728

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SpringBoot集成阿里云短信服务----实现发送验证码/通知短信功能

③ 可以根据提示立即更新个人/公司信息(即新增资质),也可以点击取消(根据个人需求选择,如果是自己玩,跳过即可。② 控制台测试(此种方式优先推荐测试):选择测试模板,模板选择验证码(通知类型经测试也是默认验证码短信内容,要想实现自定义效果,需要先申请模板),自行输入接收短信的手机号。① api测试:绑定手机号,选择测试模板(如果已申请短信模板,选择相应的模板测试即可),点击调用API发送短信,测试手机号收到短信!2、签名管理:资质通过后,会有赠送的签名,如果不满足需求,可以新增签名!

Kwan_9595的博客 2863

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

五. Django项目之电商购物商城 -- 短信验证码生成

需要开发文档和前端资料的可私聊。

几许的博客 1001

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【简单易懂】SpringBoot-短信验证码功能测试

短信-三网短信-短信验证码-短信-三网短信-短信验证码-三网短信接口-短信验证码API-三网短信验证码-短信-短信验证码-短信【最新版】_最新活动_电商_API-云市场-阿里云 (aliyun.com)https://market.aliyun.com/products/57002003/cmapi00037891.html?spm=5176.2020520132.101.4.227e7218HVCmBO#sku=yuncode3189100002 然后写个测试类调用一下就行了

weixin_59997843的博客 1933

发送短信验证码

​​​​​​【短信验证码-快速报备签名】三网短信接口-短信-短信验证码-短信服务-三网短信接口-短信-三网短信【最新版】_商业智能_电商_金融-云市场-阿里云阿里云云市场提供 专注企业短信服务10年运营与技术积累,稳定、安全、快速。服务,建站服务,api服务,助力企业、客户更好的解决问题,帮助企业进行数字化建设。阿里云云市场提供 专注企业短信服务10年运营与技术积累,稳定、安全、快速。服务,建站服务,api服务,助力企业、客户更好的解决问题,帮助企业进行数字化建设。由北京深智恒际科技有限公司为您提供服务。

qq_63242968的博客 571
上一篇: 完整电商项目--(三)验证码操作(1):图像验证码
下一篇: RSS订阅 原创 完整电商项目--(三)验证码操作(2):短信验证码--补充 :单例模式
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值