[Python]实现短信验证码的发送

简介: [Python]实现短信验证码的发送

前言

系列文章目录

[Python]目录

1. 短信API平台

使用的短信API平台为:容联云(https://www.yuntongxun.com/)

开发者文档:http://doc.yuntongxun.com/pe/5a531a353b8496dd00dcdfe2

2. 使用官方提供的SDK实现短信发送

Python SDK 文档

Python SDK GitHub地址

2.1 安装SDK

pip install ronglian-sms-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 使用官方的测试用例进行测试

from ronglian_sms_sdk import SmsSDK
# accId = '容联云通讯分配的主账号ID'
accId = '...'
# accToken = '容联云通讯分配的主账号TOKEN'
accToken = '...'
# appId = '容联云通讯分配的应用ID'
appId = '...'
# 发送短信验证码
def send_message():
  # 初始化获取发送短信的对象
    sdk = SmsSDK(accId, accToken, appId)
    # tid = '容联云通讯平台创建的模板' 默认模板的编号为1
    tid = '1'  # tid的数据类型为str
    # mobile = '手机号1,手机号2' 多个手机号在字符串中使用 , 进行分隔
    mobile = '...'
    # 第一个参数为验证码 第二个参数为验证码的有效时间(对于短信模板1)
    datas = ('123456', 5)
    # 发送短信并接收返回结果
    resp = sdk.sendMessage(tid, mobile, datas)
    print(resp)
# 测试
if __name__ == '__main__':
    send_message()

返回的结果为json类型的字符串。

2.3 参数及其参数的查看

初始化方法

调用发送短信方法

短信模板:

默认短信模板的tid为1

至于其他的模板

发送手机号:

如果没有认证,测试环境下需要设置短信能够发送的测试手机号

响应参数

返回的为json类型的字符串

3. 单例模式实现短信发送

由于每次要发送短信都需要向实例化一个对象,当发送短信的并发数太大时,会对内存造成较大的压力,所以修改为采用单例模式实现。

from ronglian_sms_sdk import SmsSDK
import json
# accId = '容联云通讯分配的主账号ID'
accId = '...'
# accToken = '容联云通讯分配的主账号TOKEN'
accToken = '...'
# appId = '容联云通讯分配的应用ID'
appId = '...'
class SendSmsVerificationCode:
    """发送短信验证码的单例类"""
    def __new__(cls, *args, **kwargs):
        """
        发送短信验证码单例类的初始化方法
        :return: 返回一个发送短信验证码的对象
        """
        # 判断类中发送短信验证码的对象 _instance 是否已经存在
        # 如果不存在, 创建一个发送短信验证码的对象, 并将其作为类属性
        if not hasattr(cls, '_instance'):
            # 创建发送短信验证码的对象
            cls._instance = super(SendSmsVerificationCode, cls).__new__(cls, *args, **kwargs)
            # 创建SmsSDK对象作为 _instance 的对象属性
            cls._instance.sdk = SmsSDK(accId, accToken, appId)
        # 如果存在, 返回发送短信验证码的对象
        return cls._instance
    def send_message(self, mobile, datas, tid='1'):
        """
        发送短信的方法
        @params mobile 字符串类型  mobile = '手机号1,手机号2'
        @params tid tid = '容联云通讯平台创建的模板' 默认模板的编号为1
        @params datas 元组类型  第一个参数为验证码 第二个参数为验证码的有效时间(对于短信模板1)
        :return: 返回发送短信后的响应参数
        """
        # 发送短信
        resp = self.sdk.sendMessage(tid, mobile, datas)
        print(json.loads(resp), type(json.loads(resp)))
        return resp
# 测试
if __name__ == '__main__':
    sendSmsVerificationCode1 = SendSmsVerificationCode()
    sendSmsVerificationCode2 = SendSmsVerificationCode()
    sendSmsVerificationCode3 = SendSmsVerificationCode()
    print(sendSmsVerificationCode1)
    print(sendSmsVerificationCode2)
    print(sendSmsVerificationCode3)
    res = sendSmsVerificationCode1.send_message('...', ('123456', 5), '1')
    print(res)

相关文章
|
6月前
|
机器学习/深度学习 数据采集 API
Python自动化解决滑块验证码的最佳实践
Python自动化解决滑块验证码的最佳实践
|
3月前
|
存储 API 数据库
自动发短信的软件,批量自动群发短信,手机号电话号生成器【python框架】
这个短信群发系统包含以下核心功能: 随机手机号生成器(支持中国号码) 批量短信发送功能(使用Twilio API)
|
3月前
|
API 数据安全/隐私保护 Python
批量发短信的软件,自动群发短信批量工具,手机号电话生成脚本插件【python】
该工具包含三个核心模块:短信发送核心功能、配置管理系统和命令行界面。使用时需先配置API密钥和短信模板
|
6月前
|
数据采集 Web App开发 文字识别
Python爬虫多次请求后被要求验证码的应对策略
Python爬虫多次请求后被要求验证码的应对策略
|
7月前
|
人工智能 算法 数据安全/隐私保护
[oeasy]python080如何生成验证码_随机数字密码_真随机
本文介绍了如何生成随机验证码的过程,从简单的随机数字生成到包含数字、大小写字母及符号的复杂验证码。通过 Python 的 `random` 和 `string` 模块,逐步扩展字符集并确保结果满足特定要求(如包含各类字符)。同时探讨了随机数生成的本质,指出计算机中的“随机”实际上是基于算法和种子值的伪随机,并非真正的物理随机。最后总结了验证码的生成原理及其在实际应用中的意义,为读者揭开日常生活中验证码背后的编程逻辑。
236 8
|
7月前
|
缓存 安全 Android开发
Python实战:搭建短信转发器,实现验证码自动接收与处理
在移动互联网时代,短信验证码是重要的安全手段,但手动输入效率低且易出错。本文介绍如何用Python搭建短信转发器,实现验证码自动接收、识别与转发。通过ADB工具监听短信、正则表达式或ddddocr库提取验证码,并利用Flask框架转发数据。系统支持多设备运行,具备安全性与性能优化功能,适合自动化需求场景。未来可扩展更多功能,提升智能化水平。
687 1
|
12月前
|
数据采集 自然语言处理 API
Python反爬案例——验证码的识别
Python反爬案例——验证码的识别
282 2
|
人工智能 文字识别 API
Python反爬机制-验证码(二)
Python反爬机制-验证码(二)
137 1
|
数据采集 自然语言处理 Python
用 Python 生成并识别图片验证码
用 Python 生成并识别图片验证码
268 1
|
12月前
|
数据采集 消息中间件 API
Python爬虫验证码识别——手机验证码的自动化处理
Python爬虫验证码识别——手机验证码的自动化处理
643 0

推荐镜像

更多