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中threading超线程用法实例分析
May 16 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
python实现桌面壁纸切换功能
Jan 21 Python
Python当中的array数组对象实例详解
Jun 12 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
Django框架中表单的用法
Jun 10 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初学者最感迷茫的问题小结
2010/03/27 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
C#的几个面试问题
2016/05/22 面试题
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
《商鞅南门立木》教学反思
2014/02/16 职场文书
《掌声》教学反思
2014/02/23 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
学习十八大标语
2014/10/09 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang