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 相关文章推荐
Python标准库之循环器(itertools)介绍
Nov 25 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python Pillow Image Invert
Jan 22 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
pip安装tensorflow的坑的解决
Apr 19 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
python自动化测试通过日志3分钟定位bug
Nov 20 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
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python文件名和文件路径操作实例
2017/09/29 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
简历的自我评价范文
2014/02/04 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
实习单位证明范例
2014/11/17 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
初二数学教学反思
2016/02/17 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
logback 实现给变量指定默认值
2021/08/30 Java/Android
如何利用React实现图片识别App
2022/02/18 Javascript