0
点赞
收藏
分享

微信扫一扫

Python 实战:搭建短信转发器,实现验证码自动接收与处理

在现代 Web 服务和应用中,短信验证码 已成为用户验证和二次验证(2FA)的主要方式之一。但在测试、自动化注册、批量账号管理等场景下,手动接收和填写验证码显然效率低下。为了解决这一问题,我们可以通过 Python 编写一个短信转发器,自动接收、解析和转发验证码,实现自动化处理。

在这篇博客中,我们将详细介绍如何使用 Python 实现一个 短信转发器,并自动处理验证码短信。

🌐 应用场景分析

  • 批量注册账号时自动接收短信验证码
  • 自动登录和测试用例中动态处理手机验证码
  • 自动转发验证码到 Web 服务或 IM 工具(如 Telegram、钉钉、邮件)

实现原理

实现自动化接收短信验证码,通常有几种方式:

  1. 物理设备接入:通过 短信猫4G 网关树莓派 + GSM 模块
  2. 第三方 API 服务:如 Twilio、云通信(阿里云、腾讯云)或其他短信接码平台。
  3. SIM 卡转发到邮箱/HTTP 接口:搭配手机 APP 或短信网关转发。

本次实战主要基于第三方 API 平台SIM 卡短信转发,通过 Python 接收验证码短信,并做自动化处理。

1. 准备工作

✅ 方案 1:使用 Twilio(国际短信服务)

  • 优点:API 完善,全球支持
  • 缺点:需付费(部分免费额度)
注册与配置 Twilio
  1. 访问官网 https://www.twilio.com
  2. 注册账号并获取 API Key
  3. 申请一个虚拟手机号码
  4. 获取 Account SIDAuth Token

✅ 方案 2:自建短信转发器(手机+APP)

你可以通过手机端 短信转发器 App(如 "Auto Forward SMS")将短信内容自动转发到指定的 HTTP 服务器或邮箱。

2. Twilio 接收短信验证码(Python 实现)

2.1 安装 Twilio Python SDK

pip install twilio flask

2.2 创建 Flask Webhook 接收短信

Twilio 会在收到短信时,向你配置的 Webhook URL 发送请求。下面是一个简单的 Python 例子,基于 Flask 接收短信。

from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/sms", methods=['POST'])
def sms_reply():
    # 获取短信内容和发送者号码
    sms_content = request.form.get('Body')
    sender = request.form.get('From')
    
    print(f"收到来自 {sender} 的短信:{sms_content}")
    
    # 这里可以添加验证码提取逻辑
    code = extract_verification_code(sms_content)
    
    if code:
        print(f"验证码是:{code}")
        # 转发验证码到其他系统(邮件、钉钉、微信等)
        forward_code(code)
    
    # 返回响应(自动回复短信,可选)
    resp = MessagingResponse()
    resp.message("验证码收到,处理成功!")
    
    return str(resp)

def extract_verification_code(text):
    import re
    match = re.search(r"\b\d{4,6}\b", text)
    return match.group(0) if match else None

def forward_code(code):
    print(f"自动转发验证码 {code} 到业务系统...")
    # 例如发送到邮箱、钉钉、企业微信等
    # pass

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

2.3 配置 Twilio 的 Webhook

  1. 登录 Twilio 控制台
  2. 找到你的号码,配置 Webhook URLhttp://你的服务器IP:5000/sms

3. 自建短信转发器实现(手机 + Python 服务)

3.1 手机转发短信

  1. 下载 "SMS Forwarder"(安卓)或 "Auto Forward SMS"
  2. 配置接收短信后,自动转发到 Python HTTP 服务
  • HTTP 地址:http://你的服务器IP:5000/sms
  • POST JSON 数据格式,例如:

{
  "phone": "+8613800000000",
  "message": "您的验证码是 123456,请勿泄露。"
}

3.2 Python Flask 接收短信转发

from flask import Flask, request, jsonify
import re

app = Flask(__name__)

@app.route("/sms", methods=["POST"])
def receive_sms():
    data = request.get_json()
    
    phone = data.get("phone")
    message = data.get("message")
    
    print(f"收到来自 {phone} 的短信内容: {message}")
    
    # 提取验证码
    code = extract_verification_code(message)
    
    if code:
        print(f"提取到验证码: {code}")
        forward_code(code)
    
    return jsonify({"status": "success"})

def extract_verification_code(text):
    match = re.search(r"\b\d{4,6}\b", text)
    return match.group(0) if match else None

def forward_code(code):
    # 发送到钉钉
    import requests
    webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
    headers = {"Content-Type": "application/json"}
    data = {
        "msgtype": "text",
        "text": {
            "content": f"验证码: {code}"
        }
    }
    requests.post(webhook_url, headers=headers, json=data)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

4. 自动化验证码处理的高级应用

✅ 4.1 自动登录与验证码处理

结合 Selenium 自动提交验证码:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com/login")

# 填写用户名和密码
driver.find_element_by_name("username").send_keys("my_user")
driver.find_element_by_name("password").send_keys("my_pass")

# 等待 Python 服务接收验证码
import time
time.sleep(10)  # 这里可以使用 WebSocket / MQ 等更优方式监听验证码到达

# 假设验证码保存在本地
with open("code.txt", "r") as f:
    code = f.read().strip()

# 填写验证码并提交
driver.find_element_by_name("code").send_keys(code)
driver.find_element_by_name("submit").click()

5. 安全性与稳定性建议

  • 加密通信:Webhook 建议采用 HTTPS,避免明文数据泄露
  • 接口验签:增加签名验证,确保转发数据来源可信
  • 验证码有效期控制:处理验证码时检查时间,避免过期使用
  • 日志与监控:记录所有短信转发日志,便于排查异常

6. 总结

通过本篇博客,我们实现了一个基于 Python 的短信验证码自动接收和处理系统,涵盖:

  1. 第三方短信服务(Twilio)
  2. 自建短信转发器(基于手机 APP + HTTP 服务)
  3. 自动提取验证码并转发(钉钉、企业微信等)
  4. 集成 Selenium 自动登录等高级自动化操作

应用场景

  • 自动注册 / 登录
  • 自动测试(自动接码)
  • 短信监控和转发

🚀 如果你有更高级的自动化需求(短信验证码识别、动态安全检测),欢迎留言交流,探讨最佳实践!

🔧 工具推荐

  • Twilio:https://www.twilio.com/
  • SMS Forwarder(安卓 App)
  • Flask + Requests + Selenium
  • OpenCV + Tesseract OCR(图像验证码处理)

📩 如果你想了解更多自动化运维、验证码识别的高级方案,欢迎留言交流!

举报

相关推荐

0 条评论