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

关于“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 代码

    【问题标题】:Need help describing and understanding some python code需要帮助描述和理解一些 python 代码 【发布时间】:2023-04-01 09:52:01 【问题描述】: 如果有人能帮助我理解这个程序中的每一行代码,我将不胜感激。谢谢 sentence = “ASK NOT WHAT YOUR…

    Python开发 2023年4月8日
    00
  • Python 打印双端队列

    【问题标题】:Python Printing a DequePython 打印双端队列 【发布时间】:2023-04-02 22:50:02 【问题描述】: 我有一个完整的 Deque Array 类,如下所示: from collections import deque import ctypes class dequeArray: DEFAULT_CAP…

    Python开发 2023年4月8日
    00
  • Python利用pygame模块制作代码雨

    下面我会详细讲解“Python利用pygame模块制作代码雨”的完整攻略。 简介 Pygame是一个Python开发的游戏开发库,可以用来编写2D游戏。而制作代码雨,是Pygame的一个经典示例。下面我会详细介绍如何利用Pygame制作代码雨。 准备工作 为了开始制作代码雨,你需要先安装Pygame模块。你可以通过以下命令来安装: pip install p…

    python 2023年5月31日
    00
  • Python实现的彩票机选器实例

    下面我会详细讲解Python实现的彩票机选器实例的完整攻略。 1. 制定需求 在开始编码之前,我们需要先制定需求,明确这个彩票机选器实例需要实现哪些功能,可以给用户带来什么样的体验。例如,这个彩票机选器需要实现以下功能: 用户可以指定选号个数,生成一组指定个数的彩票号码。 支持指定彩票号码的范围,例如从1到50,或从1到35等等。 彩票号码要求不能重复,即不…

    python 2023年5月23日
    00
  • Python3生成手写体数字方法

    Python3生成手写体数字方法完整攻略 简介 在机器学习中,手写体数字是一个经典的数据集,因此在自然语言处理和图像识别等领域需要生成手写数字来模拟各种场景。由于现成模板数量较少,因此需要一种方法来生成手写数字。 解决方案 通过使用Python3,我们可以使用TensorFlow和MNIST数据集生成手写数字的图像。 步骤 1:安装TensorFlow 打开…

    python 2023年6月3日
    00
  • 超全面python常见报错以及解决方案梳理必收藏

    超全面Python常见报错以及解决方案梳理必收藏攻略 为何需要了解常见报错和解决方案 在Python编程过程中,无论是初学者还是经验丰富的开发者,都难免会遇到各种各样的问题,其中不乏常见的报错,这些报错往往也是我们调试代码的一个重要标志。 如果我们不知道常见报错的原因和对应解决方案,那么我们在遇到问题时很容易被困扰甚至无从下手,导致浪费大量时间与精力。 因此…

    python 2023年5月13日
    00
  • python中asyncio异步编程学习

    Python中的asyncio(异步I/O)是一种高效的编程方式,可以极大地提高程序的并发能力。下面是python中asyncio异步编程学习的完整攻略: 1. 了解异步编程的概念和特点 异步编程是一种非阻塞的编程方式,与传统的同步阻塞编程方式不同。它可以在同一线程上运行多个任务,并且允许一个任务在等待某些操作完成时执行其他任务,从而最大程度地发挥计算资源的…

    python 2023年5月19日
    00
  • python speech模块的使用方法

    下面是关于python speech模块的使用方法的完整攻略。 speech模块简介 speech模块是Python语言中的一个第三方语音识别模块,可以用来进行语音识别。该模块是基于Google Speech Recognition API开发的,支持多种语言和音频格式。使用speech模块前,需要安装Python的PyAudio和SpeechRecogni…

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