python对接ihuyi实现短信验证码发送


Posted in Python onMay 10, 2020

在日常生活中我们经常会遇到接收短信验证码的场景,Python也提供了简便的方法实现这个功能,下面就用代码来实现这个功能。

一般我们需要租借短信供应商的服务器发送短信。如果是用于自学会有一定免费条数的限额。

我们就借用互忆的平台来是实现代码。

首先需要访问http://www.ihuyi.com/sms.html注册私人账号,注册完之后进入个人信息界面会看到自己的账号和密钥。

所需导入的包:

import requests,random,bs4

requests模块用于发送请求,random模块用于产生验证码,bs4模块用于解析服务器响应信息。如果没有安装这些包,打开cmd,输入pip install 包名  进行安装。

一般手机验证码都是随机四位数,所以我们用一个函数来实现,主要用random函数产生4位随机数并返回。

def create_verify_code():
  """随机产生一个4位数验证码"""
  verify_code = ''
  for i in range(4):
    verify_code += str(random.randint(0,9))
  return verify_code

接着就要利用供应商的API接口来发送短信,API文档在互忆官网上就能下载到或者到自己账户中就能找到。

headers用于构造请求头,我们只需传入手机号和要发送的文本,然后利用requests发送post请求给服务器,就会收到返回信息。

def sendmessagecode(phonenum,content):
  """发送短信验证码"""
  headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
  data = {'account':account,'password':password,'mobile':phonenum,'content':content}
  return requests.post(host,data=data,headers=headers)

在收到服务器返回信息后,我们就可以解析信息,来判断服务器是否发送成功。

response = sendmessagecode(phoneNum,content)  # 用response来接收响应信息

判断是否与服务器联通,若链接成功再进行下一步,否则打印失败信息。

if 200 == response.status_code:
   TODO...
  else:
    print('与服务器连接失败:',response.status_code)

若响应成功,就利用BeautifulSoup来解析响应信息。

soup = bs4.BeautifulSoup(response.text,features='lxml') # 构造soup对象
code = soup.find('code').string  
msg = soup.find('msg').string
if 2 == code: # 若服务器响应码为2,说明短信发送成功
  print('code: %s msg: %s ' %(code,msg))
else:
  print('code: %s msg: %s ' %(code,msg))

全文代码:

#! python3
# 测试发送短信,所用服务器为互亿测试账号
import requests,random,bs4
 
host = 'http://106.ihuyi.com/webservice/sms.php?method=Submit'
account = 'C27187646'
password = '64713042f161ae0555e9617afef40610'
 
def sendmessagecode(phonenum,content):
  """发送短信验证码"""
  headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
  data = {'account':account,'password':password,'mobile':phonenum,'content':content}
  return requests.post(host,data=data,headers=headers)
 
def create_verify_code():
  """随机产生一个4位数验证码"""
  verify_code = ''
  for i in range(4):
    verify_code += str(random.randint(0,9))
  return verify_code
 
if __name__ == '__main__':
  phoneNum = '159XXXXXXXX'
  code = create_verify_code()
  content = '您的验证码是:%s。请不要把验证码泄露给其他人。' %code
  response = sendmessagecode(phoneNum,content)
  print('短信内容:',content)
  if 200 == response.status_code:
    soup = bs4.BeautifulSoup(response.text,features='lxml')
    code = soup.find('code').string
    msg = soup.find('msg').string
    if 2 == code:
      print('code: %s msg: %s ' %(code,msg))
    else:
      print('code: %s msg: %s ' %(code,msg))
  else:
    print('与服务器连接失败:',response.status_code)

以上就是python对接ihuyi实现短信验证码发送的详细内容,更多关于python短信验证码发送实例的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
Apr 19 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
opencv 分类白天与夜景视频的方法
Jun 05 Python
python调用API接口实现登陆短信验证
May 10 #Python
aws 通过boto3 python脚本打pach的实现方法
May 10 #Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 #Python
基于python实现上传文件到OSS代码实例
May 09 #Python
使用python创建生成动态链接库dll的方法
May 09 #Python
浅析python 动态库m.so.1.0错误问题
May 09 #Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 #Python
You might like
晶体管单管来复再生式收音机
2021/03/02 无线电
法压式咖啡之制作法
2021/03/03 冲泡冲煮
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
js单例模式的两种方案
2013/10/22 Javascript
js单词形式的运算符
2014/05/06 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
用Python编程实现语音控制电脑
2014/04/01 Python
深入Python函数编程的一些特性
2015/04/13 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Django工程的分层结构详解
2019/07/18 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
30岁生日感言
2014/01/25 职场文书
优秀团支部申报材料
2014/12/26 职场文书
三八妇女节慰问信
2015/02/14 职场文书
于丹论语心得观后感
2015/06/15 职场文书
公司新员工欢迎词
2015/09/30 职场文书
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
SQL SERVER中的流程控制语句
2022/05/25 SQL Server