如何用 Python 获取手机上的短信验证码

在这个教程中,我们将学习如何用 Python 获取手机上的短信验证码。短信验证码通常用于用户身份验证,而手机的短信接口可以通过合适的库与服务进行交互。接下来,我们将解释整个过程的工作流,并逐步实现这个功能。

1. 流程概述

下面是我们获取短信验证码的过程:

步骤 描述
步骤1 确定如何将短信导出到计算机上
步骤2 使用 twilio 库发送和接收短信
步骤3 使用 flask 创建一个服务接收验证码
步骤4 编写一个脚本来处理收到的验证码
步骤5 测试整个流程

2. 步骤详解

步骤1:确定短信导出方式

首先,确保你有一个可以访问短信的方式。一种方法是通过诸如 Twilio 的服务来发送和接收短信。你需要在 Twilio 注册一个账户并获取 API 密钥和号码。

步骤2:使用 twilio 库发送和接收短信

下一个步骤是安装 Twilio 库并编写发送短信的代码。你可以通过以下命令安装 Twilio 库:

pip install twilio

接下来,我们来编写发送验证码的代码:

from twilio.rest import Client

# Twilio账户的 SID 和身份验证令牌
account_sid = 'YOUR_ACCOUNT_SID'
auth_token = 'YOUR_AUTH_TOKEN'
twilio_number = 'YOUR_TWILIO_PHONE_NUMBER'
client = Client(account_sid, auth_token)

def send_sms(to_number, message):
    # 发送短信的函数
    client.messages.create(
        to=to_number,       # 接收验证码的电话号码
        from_=twilio_number, # Twilio号码
        body=message       # 短信内容
    )

# 发送验证码
send_sms('+1234567890', 'Your verification code is: 123456')

代码解释

  • from twilio.rest import Client: 从 Twilio库中获取Client类。
  • account_sid, auth_token, twilio_number: 这里你需要输入你的 Twilio 账户信息。
  • send_sms: 这是一个函数,通过 Twilio API 发送短信。

步骤3:使用 flask 创建一个服务接收验证码

我们接下来可以创建一个简单的 Flask 应用来接收验证码。这需要安装 Flask:

pip install Flask

然后,创建 app.py 文件。编写如下代码:

from flask import Flask, request

app = Flask(__name__)

@app.route('/sms', methods=['POST'])
def sms_reply():
    # 获取收到的短信内容
    incoming_msg = request.form['Body']
    from_number = request.form['From']
    
    print(f"Received SMS: {incoming_msg} from {from_number}")
    return 'OK', 200

if __name__ == '__main__':
    app.run(debug=True)

代码解释

  • @app.route('/sms', methods=['POST']): 创建一个路由,用于处理 POST 请求。
  • request.form['Body']: 获取短信的内容。

步骤4:编写处理验证码的脚本

现在我们来处理接收到的短信验证码,并将其保存到数据库(或内存)中。为了这个步骤,假设我们将验证码存储在字典中,代码如下:

verification_codes = {}

@app.route('/sms', methods=['POST'])
def sms_reply():
    incoming_msg = request.form['Body']
    from_number = request.form['From']
    
    # 保存验证码
    verification_codes[from_number] = incoming_msg
    print(f"Received SMS: {incoming_msg} from {from_number}")
    return 'OK', 200

步骤5:测试整个流程

现在我们有一个完整的发送和接收验证码的系统。你可以使用 Postman 或 CURL 测试发送一个 POST 请求到 http://localhost:5000/sms,并查看打印的验证码。

3. 程序结构与关系图

类图

classDiagram
    class SmsHandler {
        +send_sms(to_number: str, message: str)
        +sms_reply() : str
    }

关系图

erDiagram
    SMS {
        string body
        string from
    }
    
    User {
        string phone_number
        string verification_code
    }
    
    SMS ||--o{ User : sends

结尾

通过上面的步骤,你应该能够使用 Python 和 Twilio 接收手机上的短信验证码。这个流程涉及 API 的使用以及 Flask 框架的基本操作。之后你可以进一步扩展,保存验证码到数据库中,实现更复杂的功能。

希望这个教程对你有所帮助,祝你在 Python 的学习上取得更大进展!如果你在实现过程中遇到问题,别犹豫随时问我。