1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python按照号段生成手机号接收验证码 「 python 」 python 实现短信验证码

python按照号段生成手机号接收验证码 「 python 」 python 实现短信验证码

时间:2019-05-30 23:56:27

相关推荐

python按照号段生成手机号接收验证码 「 python 」 python 实现短信验证码

当我们在注册一个网页时,有的网页会让必须要短信验证、邮箱验证,才可以进行账号的注册。其实,我们在项目中会遇到很多问题,比如:当我们进行爬虫的时候,很容易由于网页的改版,造成我们事先写好的爬虫突然无效,此时就需要及时的通知到我们的后台管理人员,可以进行及时修改工作。所以使用短信或者邮件的发送是非常有必要的。

所以今天想来谈一下如何使用Python进行发送短信的操作。

短信验证

今天利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案!

程序运行的环境是 windows10 + Python 3.6,由于第三方平台较多,我们今天使用榛子云短信平台,这个平台免费使用1条,充值10元,可以发送270条短信。

下载SDK

因为我们这次的环境是Python3,所以我们选择Python3,下载我们需要的其他文件,保存即可。

下载SDK文档

我们点击这个就会进入Python SDK 开发文档,内容如下:

1.安装

下载后的SDK只包含一个zhenzismsclient.py文件,直接导入到工程中即可使用。

以下是zhenzismsclient.py文件

# -*- coding: utf-8 -*-

# @Time : /7/21 15:19

# @Author : hang1720

# @Site :

# @File : zhenzismsclient.py

# @Software: PyCharm

import urllib.request

import urllib.parse

class ZhenziSmsClient(object):

def __init__(self, apiUrl, appId, appSecret):

self.apiUrl = apiUrl

self.appId = appId

self.appSecret = appSecret

def send(self, number, message, messageId=''):

data = {

'appId': self.appId,

'appSecret': self.appSecret,

'message': message,

'number': number,

'messageId': messageId

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/sms/send.do', data=data)

res_data = urllib.request.urlopen(req)

res = res_data.read()

res = res.decode('utf-8')

return res

def balance(self):

data = {

'appId': self.appId,

'appSecret': self.appSecret

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/account/balance.do', data=data);

res_data = urllib.request.urlopen(req)

res = res_data.read()

return res

def findSmsByMessageId(self, messageId):

data = {

'appId': self.appId,

'appSecret': self.appSecret,

'messageId': messageId

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/smslog/findSmsByMessageId.do', data=data)

res_data = urllib.request.urlopen(req)

res = res_data.read()

return res

2.用法

引入模块

import zhenzismsclient as smsclient

使用事先申请的AppId、AppSecret初始化ZhenziSmsClient:

client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret);

apiUrl为请求地址,个人开发者使用,企业开发者使用

下面是获取AppId、AppSecret的简单步骤:

1.首先,我们先登录。

zzy1.png

2.我们获取AppId、AppSecret

zzy2.jpg

温馨提示:

可以免费使用一条,后面就要自己购买了。

1)发送短信

result = client.send('15811111111', '您的验证码为2323');

send方法用于单条发送短信

参数1:接收者手机号码,参数2:短信内容

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

注: 测试发送短信内容不要使用"你好"或"12132"全数字形式,这种短信内容没有具体的意义,可能会被运营商屏蔽

{

"code":0,

"data":"发送成功"

}

2)发送短信(返回状态报告)

result = client.send('15811111111', '您的验证码为2323', 'dfee_dfdw_xdfd_dfdfd');

send方法用于单条发送短信,并且开发者可接受短信发送状态报告。

参数1:接收者手机号码,参数2:短信内容, 参数3:messageId即该条短信的唯一标识, 不能重复

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

错误代码表

错误码

原因

解决方案

100

参数格式错误

检查请求参数是否为空, 或手机号码格式错误

101

短信内容超过1000字

短信内容过长,请筛检或分多次发送

105

appId错误或应用不存在

请联系工作人员申请应用或检查appId是否输入错误

106

应用被禁止

请联系工作人员查看原因

107

ip错误

如果设置了ip白名单,系统会检查请求服务器的ip地址,已确定是否为安全的来源访问

108

短信余额不足

需要到用户中心进行充值

109

今日发送超过限额

如果设置了日发送数量,则每个接收号码不得超过这个数量

110

应用秘钥(AppSecret)错误

检查AppSecret是否输入错误,或是否已在用户中心进行了秘钥重置

111

账号不存在

请联系工作人员申请账号

1000

系统位置错误

请联系工作人员或技术人员检查原因

3)查看余额

通过该接口可查看当前剩余的短信条数

result = client.balance();

返回结果是 json 格式的字符串, code : 查询状态,0为成功,data 为剩余短信条数。非0为查询失败,可从data中查看错误信息

错误代码表同上

4)查询短信

接口描述

根据messageId查询已发送短信

result = client.findSmsByMessageId('dfee_dfdw_xdfd_dfdfd');

注: 必须是post请求,个人开发者域名使用,企业开发者域名使用

请求参数

参数名称

必选

类型

描述

appId

string

应用id,可通过用户中心,应用详情查看

appSecret

string

应用秘钥,可通过用户中心,应用详情查看

messageId

string

信息id,对应发送短信接口的messageId字段

返回结果

返回结果是json格式的字符串,code: 查询状态,0为成功。非0为失败,可从data中查看错误信息

{

"code":0,

"data":{}

}

返回结果是json格式的字符串, code: 查询状态,0为成功,data短信信息的json字符串

3.代码

我们学习完文档之后,学习到的代码如下:

# -*- coding: utf-8 -*-

# @Time : /7/22 15:00

# @Author : hang1720

# @Site :

# @File : send_message.py

# @Software: PyCharm

import zhenzismsclient as smsclient

# 生成随机验证码

import random

code = ""

for num in range(0, 6):

code = code + str(random.randint(0, 9))

# 参数

# apiUrl为请求地址

apiUrl = ""

appId = "101**6" # 请在这里输入你的`appid`

appSecret = "YzNmY2MyNGItYz********Q0LWJhMTEtNjEyYTY3MWZjZDky" # 请在这里输入你的`appSecret`

# 初始化ZhenziSmsClient

client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret)

phone_num = input("请输入接受信息的手机号:")

msg = "%s,您的验证码是%s,5分钟内有效,请注意保密。" % (phone_num, code)

result = client.send(phone_num, msg)

print(result)

今天我们就先学习都这里,后面如何在项目中使用,等我们学完 redis ,我会再给大家讲解。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。