短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于阿里云服务和腾讯云服务分别来体验一下国际短信和国内短信接口。
一、阿里云短信服务
首先是阿里云,注册:https://www.aliyun.com/
短信服务:https://www.aliyun.com/product/sms?spm=5176.10695662.1128094.2.2a6b4bee30Yrlc
搜索短信服务,注册成功后可以免费领取(注意:这个只有中午10点以后才开放,而且每人只有100条短信,超出会扣钱的)

之后找到国内短信,标签管理,并添加标签

进入添加签名后使用场景选择验证码(注意:这个验证码用户级的只能创建一个,且用且珍惜)

签名添加完毕后,退出添加模板

模板添加完成之后阿里云上基本以操作完毕。之后点击个人头像,找到AccessKey管理

进入之后会有一个用户AccessKey*,如果没有可以自行创建

完成之后找到快速学习,这里可以查看API Demo,里面可以查看文档和测试短信发送

这些完成之后就差不多了。。。。
接下里安装阿里云短信的sdk
编写脚本,并测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest
client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('dysmsapi.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https')
request.set_version('2017-05-25')
request.set_action_name('SendSms')
request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', "接收手机号") request.add_query_param('SignName', "标签名称") request.add_query_param('TemplateCode', " 模版CODE") request.add_query_param('TemplateParam', "{‘code’:}")
response = client.do_action(request)
print(str(response, encoding = 'utf-8'))
|
二、腾讯云短信服务
第一步,注册腾讯云 https://cloud.tencent.com
(注意:注册时有点复杂)
注册成功之后搜索短信,在这个我们需要进行一系列的认证操作
认证成功之后点击应用管理找到应用列表,之后你就会看到有一个默认应用,但是你也可以自己创建一个

创建完成之后查看自己的APPID与appkey,并保存

之后找到国内短信并创建自己的签名(注意:这个个人需要小程序)

签名创建之后,创建模板

接下里安装腾讯云短信的sdk
1
| pip3 install qcloudsms_py
|
编写脚本测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| appid = 你的appid
appkey = "你的appkey"
phone_numbers = ["你要发送的手机号"]
template_id = 在模板列表里获取
sms_sign = "签名名称"
from qcloudsms_py import SmsSingleSender from qcloudsms_py.httpclient import HTTPError
import ssl ssl._create_default_https_context = ssl._create_unverified_context
ssender = SmsSingleSender(appid, appkey) params = ["6666","5"] try: result = ssender.send_with_param(86, phone_numbers[0], template_id, params, sign=sms_sign, extend="", ext="") print(result) except HTTPError as e: print(e) except Exception as e: print(e)
|