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使用urllib2获取网络资源实例讲解
Dec 02 Python
Python中os.path用法分析
Jan 15 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
python使用str & repr转换字符串
Oct 13 Python
答题辅助python代码实现
Jan 16 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
Python查找文件中包含中文的行方法
Dec 19 Python
python try 异常处理(史上最全)
Mar 07 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
django rest framework 自定义返回方式
Jul 12 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
php下使用以下代码连接并测试
2008/04/09 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
python中set()函数简介及实例解析
2018/01/09 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
违反学校规定检讨书
2014/01/18 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
工地安全质量标语
2014/06/07 职场文书
法制演讲稿
2014/09/10 职场文书
安全月宣传标语
2014/10/07 职场文书
七一晚会主持词
2015/06/29 职场文书
Python上下文管理器Content Manager
2021/06/26 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python