专栏首页毛利学Python我用Python给你发了个短信验证码,你也来试试

我用Python给你发了个短信验证码,你也来试试

在互联网时代,为了保证操作的安全性,我们几乎所有的登录、注册等操作都需要用到短信验证码,一是为了防止自己的平台被机器频繁访问,加大服务压力,二是避免非本人操作带来的风险等等。验证码的服务平台有很多,他们的运行机制也都大同小异。本次分享一个对新手开发非常快捷的短信验证码方式。

一、准备工作

我们此次发送短信验证码需要借助第三方平台,第三方平台有很多,例如国外的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】,这是我们发短信的【用户名】和【密码】。

接下来就直接上代码:

#-*- 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、响应分析

运行代码后会响应一串代码。如:

{"code":2,"msg":"\u63d0\u4ea4\u6210\u529f","smsid":"15642066093902217141"}

具体各种响应参数如下:

响应参数
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条短信验证码除了发送的数字可以改动外,其他内容和格式是不允许修改的,包括接收到的短信有【互亿无线】的签名,而不是我们自己的签名。当然,如果我们购买了他们的短信条数,这些都是可以修改的,【互亿无线】也提供了丰富的短信模板。

简单的发送短信验证码的功能完成了,初学者可以学着使用函数进行封装,然后直接调用,便于今后直接使用。

本文分享自微信公众号 - Python之王(gh_70a22bfa8e3a)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ggplot2

    原文:https://blog.csdn.net/weixin_44510615/article/details/89579225

    润森
  • IntelliJ IDEA安装和配置

    IntelliJ在业界被公认为最好的java开发工具之一,没有之一,比 Eclipse 好用很多。

    润森
  • Python从入门到大师教程 | 三、新手Jupyter不会用,我十招教你盘她

    安装好了anaconda只好,大家应该见到这些玩意,还有一个spider我删除了,有Pycharm就可以不要spider了。我这里的jupyter是设置了dee...

    润森
  • JDK8的CAS实现学习笔记

    itliusir
  • 只需20小时,让0基础的你掌握小程序云开发!这个暑假,约否?

    "听说五湖四海的小伙伴们对2018年腾讯云高校云人才培养计划项目开展的系列线上线下工坊等活动念念不忘呀~这个暑假项目组又为广大童鞋谋福利啦~为期10天的0基础...

    腾讯高校合作
  • 特斯拉Model 3 Key Card里的黑科技

    其中Key Card作为手机蓝牙钥匙的备份方案(以应对手机没电了/忘带了/APP故障/车机蓝牙故障等上不了车的窘境),相比传统的遥控钥匙具有成本低、便于携带等优...

    曲奇泡芙
  • Morris图表使用小记

    挺好用的,碰到几个问题,有的是瞎试解决了的: 1、我想折线图能够响应单击事件,即点击某个节点后,就能加载进一步的信息,帮助没找到,参照另外一个地方的写法,居然支...

    用户1075292
  • 非均衡数据处理--如何学习?

    Sampling技术比较直观,就是怎么把样本变成均衡的。 我们知道不均衡数据, 最重要的还是收集minority数据。 但是一般这是一个长期的过程。 那么, ...

    史博
  • NTT DoCoMo如何削减成本并提高基于ETSI NFV的效率

    NTT DoCoMo在计划提高效率和降低成本之后,准备扩大其NFV实施。此前,该运营商于2016年3月推出了全球首个多厂商ETSI NFV商用系统。

    SDNLAB
  • Vue-router设置每个页面的标题title

    乐心湖

扫码关注云+社区

领取腾讯云代金券