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的分页器实例(paginator)
Dec 01 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
python的中异常处理机制
Aug 30 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Python 串口读写的实现方法
Jun 12 Python
如何获取Python简单for循环索引
Nov 21 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
零基础学python应该从哪里入手
Aug 11 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 Python
Matplotlib中rcParams使用方法
Jan 05 Python
python实现商品进销存管理系统
May 30 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
十天学会php之第九天
2006/10/09 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
Python实现控制台进度条功能
2016/01/04 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Python中常见的数制转换有哪些
2020/05/27 Python
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
外贸采购员岗位职责
2014/03/08 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
Django框架中模型的用法
2022/06/10 Python