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查找第k小元素代码分享
Dec 18 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
详解python pandas 分组统计的方法
Jul 30 Python
tensorflow如何批量读取图片
Aug 29 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 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中使用XML
2006/10/09 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
angular中的cookie读写方法
2017/08/02 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python2.x与Python3.x的区别
2016/01/14 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python 日志 logging模块详细解析
2020/03/31 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
师范大学音乐表演专业求职信
2013/10/23 职场文书
路政管理专业推荐信
2013/11/11 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
社区八一活动方案
2014/02/03 职场文书
质量保证书范本
2014/04/29 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
工资收入证明
2014/10/07 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
学困生转化工作总结
2015/08/13 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫