在互联网时代,为了保证操作的安全性,我们几乎所有的登录、注册等操作都需要用到短信验证码,一是为了防止自己的平台被机器频繁访问,加大服务压力,二是避免非本人操作带来的风险等等。验证码的服务平台有很多,他们的运行机制也都大同小异。本次分享一个对新手开发非常快捷的短信验证码方式。
一、准备工作
我们此次发送短信验证码需要借助第三方平台,第三方平台有很多,例如国外的twilio(https://www.twilio.com/),国内的有榛子云(http://smsow.zhenzikj.com/ ),互亿无线(http://www.ihuyi.com/)以及阿里云平台(https://www.aliyun.com/)等等都是很好的平台。本文以互亿无线平台进行示范。
1、互亿无线账号注册
所有的短信发送平台都需要注册。互亿无线也不例外,我们先去注册个账号。点击互亿无线网址(http://www.ihuyi.com/),进入官网进行注册。点击右上方【注册有礼】。
注册界面,根据如下注册信息。
注册完成就可以登录使用了。点击左侧的【验证码通知短信】,能够看到赠送10条免费短信,并在右侧有【API接口信息 (验证码通知短信)】。
二、工具安装
本示例采用Python3 和PyCharm工具,并使用第三方【requests】,需要提前安装。
1、Python3安装
请参考【人生苦短,一起学Python(四) Python安装】
2、PyCharm安装与简单操作
请参考【人生苦短,一起学Python(七)PyCharm安装】
3、requests库的查看和安装
a、打开黑屏终端,输入【pip3 list】,查看是否已装【requests库】
b、如果没有安装,在黑屏终端输入【pip3 install requests】,等待安装完成。
三、短信验证码发送
1、代码实现
首先再开始之前,我们需要到【互亿无线】中复制出自己的【API接口信息 (验证码通知短信)】中的【APIID】和【APIKEY】,这是我们发短信的【用户名】和【密码】。
接下来就直接上代码:
代码语言:javascript复制#-*- coding:utf-8 -*-
#导包
import requests
import random
#用户名 查看用户名请登录用户中心->验证码、通知短信->帐户及签名设置->APIID
account = "C85923585" #这是我的用户名,请更换成自己的
#密码 查看密码请登录用户中心->验证码、通知短信->帐户及签名设置->APIKEY
password = "bd551749710f250d129733ac0f2c6b99" #这是我的密码,已重置,请更换成自己的
#互亿无线请求发送短信验证码的网址,直接复制使用
url= r'http://106.ihuyi.com/webservice/sms.php?method=Submit'
#这里是要发送给用户的手机号码
mobile = "156xxxxxxxx"
#随机生成6个数字
#现定义一个空字符串用于接收生成的6个数字
code = ''
#for循环生成数字
for i in range(6):
#使用random随机生成一个数字
num = random.randint(0, 9)
#对数字转换成字符串后进行拼接
code = str(num)
#这里是要发送的内容, %s 是要发送的验证码,用于占位,
text = "您的验证码是:%s。请不要把验证码泄露给其他人。"%code
#通过查看互亿无线提供的技术文档,发送短信验证码需要提供的数据及格式,并用字典存在data中
data = {'account': account, 'password' : password, 'content': text, 'mobile':mobile,'format':'json' }
#使用requests 发送POST请求给互亿无线,并接收返回的response内容
req = requests.post(url=url, data=data)
#使用.text读取返回的内容
content =req.text
#打印出返回的内容
print(content)
2、响应分析
运行代码后会响应一串代码。如:
代码语言:javascript复制{"code":2,"msg":"u63d0u4ea4u6210u529f","smsid":"15642066093902217141"}
具体各种响应参数如下:
代码语言:javascript复制响应参数
code msg
0 提交失败
2 提交成功
400 非法 ip 访问
401 帐号不能为空
402 密码不能为空
403 手机号码不能为空
4030 手机号码已被列入黑名单
404 短信内容不能为空
405 API ID 或 API KEY 不正确
4050 账号被冻结
40501 动态密码已过期
40502 动态密码校验失败
4051 剩余条数不足
4052 访问 ip 与备案 ip 不符
406 手机号码格式不正确
407 短信内容含有敏感字符
4070 签名格式不正确
4071 没有提交备案模板
4072 提交的短信内容与审核通过的模板内容不匹配
40722 变量内容超过指定的长度【8】
4073 短信内容超出长度限制
4074 短信内容包含 emoji 符号
4075 签名未通过审核
408 发送超限([20]条),已加入黑名单,可登入平台解除
4080 同一手机号码同一秒钟之内发送频率不能超过 1 条
4082 超出同一手机号一天之内【5】条短信限制
4085 同一手机号验证码短信发送超出【5】条
总 结
到目前,简单的发送短信验证码的功能基本实现了。但是,互亿无线免费赠送的10条短信验证码除了发送的数字可以改动外,其他内容和格式是不允许修改的,包括接收到的短信有【互亿无线】的签名,而不是我们自己的签名。当然,如果我们购买了他们的短信条数,这些都是可以修改的,【互亿无线】也提供了丰富的短信模板。
简单的发送短信验证码的功能完成了,初学者可以学着使用函数进行封装,然后直接调用,便于今后直接使用。