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 相关文章推荐
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
Python shutil模块用法实例分析
Oct 02 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
关于python中的xpath解析定位
Mar 06 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
Python类型转换的魔术方法详解
Dec 23 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python数组复制拷贝的实现方法
2015/06/09 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
详解Python if-elif-else知识点
2018/06/11 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
EJB3推出JPA的原因
2013/10/16 面试题
公司担保书格式范文
2014/05/12 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
复兴之路展览观后感
2015/06/02 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
小学班主任心得体会
2016/01/07 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
美元符号 $
2022/02/17 杂记