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中的循环语句的用法
Apr 09 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python占位符输入方式实例
May 27 Python
java中的控制结构(if,循环)详解
Jun 26 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
Python 动态变量名定义与调用方法
Feb 09 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
Python OpenGL基本配置方式
May 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通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
微信小程序中为什么使用var that=this
2019/08/27 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
Python学习笔记之常用函数及说明
2014/05/23 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
行政助理的职责
2013/11/14 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
开业主持词
2014/03/21 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers