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的Tornado框架的HTTP客户端的教程

    Tornado是一个基于Python的Web框架,它提供了一个异步的网络库,可以用于构建高性能的Web应用程序和服务。Tornado还提供了一个HTTP客户端,可以用于发送HTTP请求和处理HTTP响应。本文将介绍如何使用基于Python的Tornado框架的HTTP客户端,包括安装和使用方法,并提供两个示例。 安装Tornado框架 在使用Tornado框…

    python 2023年5月15日
    00
  • Python Numpy中的Kaiser

    Kaiser是一种数字信号处理中常用的窗函数,它在时域上具有抗旁瓣能力,因此被广泛地用于滤波器设计和频谱分析。Python中的NumPy库提供了丰富的函数和工具来支持快速的Kaiser窗设计和应用。 Kaiser 窗函数简介 Kaiser窗函数常常被用来设计数字滤波器,它的主要特点是在频域上具有宽带过渡区和优良的波形抗干扰特性,同时具有指定截止频率处盈余峰值…

    python-answer 2023年3月25日
    00
  • 用Python自动清理电脑内重复文件,只要10行代码(自动脚本)

    下面是详细讲解如何使用Python自动清理电脑内重复文件的完整攻略。 目录 确认要去重的文件夹 遍历文件夹并计算hash 筛选出重复文件 删除重复文件 1. 确认要去重的文件夹 首先,我们需要确认要去重的文件夹路径,这可以使用Python中的os库来实现。可以使用以下代码来获取文件夹路径: import os folder_path = r’C:\Users…

    python 2023年5月19日
    00
  • 如何将一个CSV格式的文件分割成两个CSV文件

    以下是将CSV文件分割成两个CSV文件的攻略。 准备工作 要将CSV文件分割成两个CSV文件,你需要确保你的电脑上有Python环境。如果你没有安装Python,请先安装Python,然后继续阅读本文档。 第一步:读取CSV数据 我们首先需要读取原始的CSV数据。这可以通过Python的csv模块来完成。代码示例: import csv with open(…

    python 2023年6月3日
    00
  • urllib和BeautifulSoup爬取维基百科的词条简单实例

    下面是“urllib和BeautifulSoup爬取维基百科的词条简单实例”的完整攻略。 1. 准备工作 在开始爬取维基百科的内容之前,我们需要做一些准备工作。 首先需要安装BeautifulSoup和urllib库,可以通过以下命令安装: pip install beautifulsoup4 pip install urllib 接下来,我们需要了解维基百…

    python 2023年6月3日
    00
  • python中嵌套函数的实操步骤

    下面是关于Python中嵌套函数(Nested Function)的实操步骤的完整攻略。 1. 什么是Python中的嵌套函数? 在Python中,嵌套函数是定义在函数中的函数。即在函数内部定义一个函数,这个内部函数就是一个嵌套函数。这样,外部的函数就成为了嵌套函数的容器。 嵌套函数的好处在于可以封装、隐藏子函数的实现细节,不会与全局变量等产生命名冲突,并且…

    python 2023年6月5日
    00
  • Python 汇总和计数进行统计分析

    下面是针对Python的汇总和计数进行统计分析的完整攻略。 汇总和计数进行统计分析 在Python中,我们可以使用pandas库来进行数据分析和统计。其中,groupby()方法可以对数据分组,并进行统计分析。以下是groupby()方法的使用方法: df.groupby(by=grouping_columns)[columns_to_show].funct…

    python-answer 2023年3月25日
    00
  • mysql 通过拷贝数据文件的方式进行数据库迁移实例

    当需要将MySQL数据库从一个服务器迁移到另一个服务器时,通常有几种方法可以完成此操作。其中一种方法是通过拷贝数据文件的方式进行数据库迁移,也称为物理备份。 步骤一:关闭MySQL服务器 为了确保数据在迁移过程中不会被更改或丢失,需要首先关闭MySQL服务器。在Linux系统上,可以使用以下命令关闭MySQL服务器: service mysql stop 步…

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