python实现发送和获取手机短信验证码

yizhihongxing

关于“python实现发送和获取手机短信验证码”的完整攻略,大致可以分为以下几个步骤:

  1. 选择短信平台及API。目前市面上有很多短信平台提供API接口,选择一个稳定可靠的短信平台,可以根据自己的需要选择不同的套餐、价格、支持的国内外地区等。这个可以看自己的需求和具体情况进行选择。常用的短信平台有阿里云、腾讯云、华信等。

  2. 在短信平台上申请账号,获取API接口的相关参数。一般来说,在短信平台上注册账号,申请使用API接口的权限,然后获得一些必要的参数和密钥(如accessKeyId/accessKeySecret、appId、appSecret等),这些参数都是调用API接口时需要传入的。

  3. 通过python代码调用短信平台提供的API接口。Python中有很多第三方库可以用来调用API接口,例如requestshttp.clienturllib等。通过这些库,可以构造请求接口所需要的参数和密钥,调用API接口实现短信的发送和接收。

  4. 对于接收验证码的情况,需要进行短信的解析。一般情况下,短信平台返回的结果是一个JSON格式的数据,需要进行解析,获取其中的验证码。

接下来,我分别通过一个阿里云和一个腾讯云的API来演示如何实现短信的收发:

阿里云API实现短信发送

第一步:申请短信发送服务

阿里云提供了免费的短信服务试用,可以在其官网申请进行体验,得到以下必要的参数:

  • accessKeyId/accessKeySecret:阿里云账号的ID和密钥对,可以从阿里云控制台中申请;
  • signName:短信签名,需要在阿里云短信服务中申请;
  • templateCode:短信模板ID,需要在阿里云短信服务中申请。

第二步:通过Python发送短信

import requests
import json

url = 'https://dysmsapi.aliyuncs.com/'
accessKeyId = 'your_accessKeyId'
accessKeySecret = 'your_accessKeySecret'
params = {
    'RegionId': 'cn-hangzhou',
    'AccessKeyId': accessKeyId,
    'Format': 'JSON',
    'SignatureMethod': 'HMAC-SHA1',
    'SignatureVersion': '1.0',
    'SignatureNonce': '123456',
    'Timestamp': '20200222133530',
    'Action': 'SendSms',
    'Version': '2017-05-25',
    'PhoneNumbers': 'your_phone_number',
    'SignName': 'your_sign_name',
    'TemplateCode': 'your_template_code',
    'TemplateParam': json.dumps({'code': '123456'})
}
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = '&'.join([f'{key}={value}' for key, value in sorted_params])
to_sign = f'GET&%2F&{query_string}'
signature = hmac_sha1(to_sign.encode(), accessKeySecret.encode())
params['Signature'] = signature
response = requests.get(url, params=params)
print(response.json())

第三步:解析短信的返回值

import json

response_json = {
    "Message": "OK",
    "RequestId": "099C4463-D64D-4B1A-AC43-3D40874CFF17",
    "BizId": "163669153669716526^0",
    "Code": "OK"
}
assert response_json['Message'] == 'OK'
assert response_json['Code'] == 'OK'

腾讯云API实现短信发送

第一步:申请短信发送服务

腾讯云短信服务同样提供了API接口,可以在其官网上申请,得到以下必要的参数:

  • App ID:短信服务的APP ID;
  • App Key:短信服务的APP Key;
  • 短信签名:需要在腾讯云平台中申请;
  • 短信模板ID:需要在腾讯云平台中申请。

第二步:通过Python发送短信

import requests
from urllib.parse import quote
import json
import time

url = 'https://yun.tim.qq.com/v5/tlssmssvr/sendsms'
appid = 'your_appid'
appkey = 'your_appkey'
sign = 'your_sign'
template_id = 'your_template_id'
params = {
    'tel': {'nationcode': '86', 'mobile': 'your_phone_number'},
    'sig': '',
    'tpl_id': template_id,
    'params': ['your_verification_code'],
    'sign': sign,
    'time': int(time.time()),
    'extend': '',
    'ext': ''
}

params_str = '&'.join([f'{k}={quote(str(params[k]))}' for k in sorted(params.keys())])
raw_sig = f'POSTyun.tim.qq.com/v5/tlssmssvr/sendsms?{params_str}'.encode()
sig = hmac_sha256(raw_sig, appkey.encode())
params['sig'] = sig

headers = {'Content-Type': 'application/json'}
response = requests.post(url, headers=headers, data=json.dumps(params))
print(response.json())

第三步:解析短信的返回值

response_json = {
    "result": 0,
    "errmsg": "OK",
    "ext": "",
    "sid": "your_sid",
    "fee": 1
}
assert response_json['result'] == 0
assert response_json['errmsg'] == 'OK'

以上是通过阿里云和腾讯云API实现短信收发的Python示例。根据不同的短信平台和API接口,大体的逻辑和步骤都是类似的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现发送和获取手机短信验证码 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python找不到依赖pypiwin32或pywin32-ctypes的错误

    以下是关于“Python 找不到依赖 pypiwin32 或 pywin32-ctypes 的错误”的完整攻略: 问题描述 在使用 Python 进行开发时会遇到找不到依赖 pypiwin32 或 pywin32-ctypes 的错误。本文将介绍如何解决这个问题。 解决方法 1. 使用 pip 安装 可以使用 pip 命令在命令行中安装 pypiwin32 …

    python 2023年5月13日
    00
  • python通过colorama模块在控制台输出彩色文字的方法

    下面是Python通过colorama模块在控制台输出彩色文字的方法的完整攻略: 简介 Colorama是一个可以在控制台输出彩色文字的Python库,它跨平台兼容Windows、Linux、Mac OS等操作系统,并且支持ANSI转义码、Windows控制台和Linux中的256色彩色输出。 安装 可以使用pip来安装colorama库,只需要在终端(或命…

    python 2023年6月3日
    00
  • Python格式化输出的具体实现

    当我们需要将变量值以指定的格式输出的时候,就需要使用到Python的格式化输出。Python中的格式化输出可以使用字符串格式化符号或format()方法。 字符串格式化符号 Python中常用的字符串格式化符号有: %s 字符串 (无限制长度) %d 整数 %f 浮点数 %e 科学计数法形式的浮点数 %o 八进制数 %x 十六进制数 (小写字母形式) %f …

    python 2023年5月19日
    00
  • Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)

    让我来为您详细讲解一下 “Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)” 的完整攻略。 Python 3.10 的首个 PEP 诞生 PEP(Python Enhancement Proposal)是 Python 社区用于提出 Python 语言新特性和改进的文档形式。在最新的 Python 3.10 版本中,它的…

    python 2023年6月3日
    00
  • Python3内置模块random随机方法小结

    Python3内置模块random随机方法小结 Python内置的random模块提供了许多生成随机数的方法,可以用于模拟、游戏、密码生成、实验和统计等场合。本文将介绍常用的几个方法以及示例。 1. random.random() 函数返回一个0到1之间的随机浮点数,即[0,1)区间内的数。 示例1: import random print(random.r…

    python 2023年6月3日
    00
  • 在Python中评估Hermite数列在点x上广播的系数的列

    评估Hermite数列在指定点$x$上广播的系数的列,可以采用Numpy中的Hermite函数进行计算。具体步骤如下: 步骤一:导入必要的库 首先要导入Numpy库,调用该库中提供的Hermite函数。 import numpy as np 步骤二:指定Hermite多项式的次数 根据Hermite多项式的定义,我们需要先指定要计算的多项式的次数$n$,然后…

    python-answer 2023年3月25日
    00
  • Python 图形绘制详细代码(一)

    那我来为您详细讲解一下“Python 图形绘制详细代码(一)”的完整攻略。 简介 本文将为大家介绍如何使用 Python 的绘图库 Matplotlib 来创建各种类型的图形。我们将从基础开始,逐步深入。 Matplotlib 是一个极其强大、灵活的绘图库,它不仅可以创建线图、柱状图和散点图等常规类型的图形,还能够应对更加复杂的需求,如 3D 图形、色彩填充…

    python 2023年5月19日
    00
  • Python urls.py的三种配置写法实例详解

    下面是“Python urls.py的三种配置写法实例详解”的完整攻略: 简介 urls.py是Django中非常常用的配置文件,用于配置URL路由,即解析请求的URL路径并确定需要哪个视图函数处理这个请求。本文将介绍Python中urls.py的三种常见写法及其使用方法和示例。 第一种写法 from django.urls import path from…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部