「 python 」 python 实现短信验证码

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

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

短信验证

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

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

调用榛子云短信:http://smsow.zhenzikj.com 的短信接口,生成验证码并发送。

下载SDK文档:http://smsow.zhenzikj.com/doc/sdk.html ,我们进入这个链接,会出现下面这个页面。

下载SDK

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

下载SDK文档

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

1.安装

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

以下是zhenzismsclient.py文件

#  -*- coding: utf-8 -*-
# @Time    : 2019/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

使用事先申请的AppIdAppSecret初始化ZhenziSmsClient:

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

apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com

下面是获取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请求,个人开发者域名使用sms_developer.zhenzikj.com,企业开发者域名使用sms.zhenzikj.com

请求参数
参数名称 必选 类型 描述
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    : 2019/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 = "http://sms_developer.zhenzikj.com"
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 ,我会再给大家讲解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容