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

简介: 在移动互联网时代,短信验证码是重要的安全手段,但手动输入效率低且易出错。本文介绍如何用Python搭建短信转发器,实现验证码自动接收、识别与转发。通过ADB工具监听短信、正则表达式或ddddocr库提取验证码,并利用Flask框架转发数据。系统支持多设备运行,具备安全性与性能优化功能,适合自动化需求场景。未来可扩展更多功能,提升智能化水平。

引言
在移动互联网时代,短信验证码已成为身份验证、账号注册、登录保护等环节的重要安全手段。然而,手动输入验证码不仅效率低下,还容易出错。本文将介绍如何利用Python搭建一个短信转发器,实现验证码的自动接收、识别与转发,让你的工作生活更加便捷。
浅谈隧道代理的动态IP切换机制与实现原理 (10).png

一、准备工作
1.1 硬件与软件需求
硬件:Android手机(需开启开发者模式)、电脑
软件:

Python环境(推荐Python 3.6+)
ADB工具(Android Debug Bridge)
短信处理库(如py-android-sms)
Web框架(如Flask)
验证码识别库(如ddddocr)
1.2 环境配置
安装ADB工具
ADB是Android开发者工具包的一部分,可通过以下方式安装:

Windows:从https://developer.android.com/studio/releases/platform-tools下载安装包。
Mac/Linux:通过终端命令安装:

Mac

brew install android-platform-tools

Ubuntu

sudo apt install android-tools-adb
安装完成后,运行adb version验证安装是否成功。

启用手机开发者模式
打开手机“设置”。
进入“关于手机”,连续点击“版本号”7次,直到提示“开发者模式已启用”。
返回设置,进入“开发者选项”,打开“USB调试”。
连接手机与电脑
将手机通过USB线连接电脑,运行adb devices,若显示设备ID则说明连接成功。
安装Python依赖库

pip install adb-shell flask ddddocr

二、核心功能实现
2.1 短信监听与获取
使用ADB工具监听手机短信,提取短信内容和发送者信息。

import subprocess
import re

def get_sms():
try:

    # 执行ADB命令获取短信
    result = subprocess.run(
        ["adb", "shell", "content", "query", "--uri", "content://sms/inbox", "--projection", "address,body,date"],
        capture_output=True,
        text=True
    )
    return result.stdout
except Exception as e:
    print(f"获取短信失败: {e}")
    return None
AI 代码解读

def parse_sms(sms_data):
messages = sms_data.split("\n")
for message in messages:
if "body=" in message:

        # 提取短信内容
        body_start = message.index("body=") + len("body=")
        body_end = message.index(",", body_start)
        body = message[body_start:body_end]
        # 提取发送者号码
        address_start = message.index("address=") + len("address=")
        address_end = message.index(",", address_start)
        address = message[address_start:address_end]
        yield address, body
AI 代码解读

示例:获取并解析短信

sms_data = get_sms()
if sms_data:
for address, body in parse_sms(sms_data):
print(f"发送者: {address}, 内容: {body}")
2.2 验证码识别
利用正则表达式或ddddocr库识别短信中的验证码。

方法一:正则表达式

def extract_verification_code(sms_body):

# 假设验证码为6位数字
code = re.search(r'\b\d{6}\b', sms_body)
return code.group(0) if code else None
AI 代码解读

方法二:ddddocr库

import ddddocr

def ocr_verification_code(image_path):
ocr = ddddocr.DdddOcr()
with open(image_path, 'rb') as f:
image = f.read()
return ocr.classification(image)
2.3 数据转发
通过HTTP请求或WebSocket将识别出的验证码转发到指定的接收端(如Web应用、API接口等)。

from flask import Flask, request

app = Flask(name)

@app.route('/forward', methods=['POST'])
def forward():
data = request.json
code = data.get('code')

# 转发验证码到目标地址
# 例如:requests.post(url, json={'code': code})
return {'status': 'success', 'message': f'验证码 {code} 已转发'}
AI 代码解读

if name == 'main':
app.run(port=5000)
三、高级功能扩展
3.1 多设备支持
通过多线程或异步编程,扩展程序以支持多个Android设备同时工作。

import threading

def monitor_device(device_id):
while True:
sms_data = get_sms(device_id)
if sms_data:
for address, body in parse_sms(sms_data):
code = extract_verification_code(body)
if code:
forward(code)

启动多个设备监控线程

devices = ['device1', 'device2', 'device3']
for device in devices:
thread = threading.Thread(target=monitor_device, args=(device,))
thread.start()

3.2 安全增强
身份验证:在转发接口中添加Token验证,防止未授权访问。
数据加密:使用HTTPS协议传输数据,确保通信安全。
3.3 性能优化
缓存机制:缓存已处理的短信ID,避免重复处理。
异步处理:使用异步框架(如FastAPI)提高并发处理能力。
四、实战案例:搭建完整的短信转发系统
4.1 系统架构
手机(短信接收) -> ADB工具(短信监听) -> Python脚本(解析与识别) -> Web接口(数据转发) -> 目标应用

4.2 完整代码示例
import subprocess
import re
from flask import Flask, request
import threading

app = Flask(name)

def get_sms(device_id=None):

# 根据设备ID获取短信(多设备支持)
command = ["adb", "shell", "content", "query", "--uri", "content://sms/inbox", "--projection", "address,body,date"]
if device_id:
    command.insert(1, f"-s {device_id}")
result = subprocess.run(command, capture_output=True, text=True)
return result.stdout
AI 代码解读

def parse_sms(sms_data):
messages = sms_data.split("\n")
for message in messages:
if "body=" in message:
body_start = message.index("body=") + len("body=")
body_end = message.index(",", body_start)
body = message[body_start:body_end]
address_start = message.index("address=") + len("address=")
address_end = message.index(",", address_start)
address = message[address_start:address_end]
yield address, body

def extract_verification_code(sms_body):
code = re.search(r'\b\d{6}\b', sms_body)
return code.group(0) if code else None

@app.route('/forward', methods=['POST'])
def forward():
data = request.json
code = data.get('code')

# 实现转发逻辑
print(f"验证码 {code} 已转发")
return {'status': 'success'}
AI 代码解读

def monitor_device(device_id):
while True:
sms_data = get_sms(device_id)
if sms_data:
for address, body in parse_sms(sms_data):
code = extract_verification_code(body)
if code:

                # 调用转发接口
                app.config['DEBUG'] = False
                app.config['TESTING'] = False
                with app.app_context():
                    forward_result = forward(json={'code': code})
                print(forward_result)
AI 代码解读

if name == 'main':

# 启动多个设备监控线程
devices = ['device1', 'device2']  # 替换为实际设备ID
for device in devices:
    thread = threading.Thread(target=monitor_device, args=(device,))
    thread.start()
app.run(port=5000)
AI 代码解读

4.3 运行与测试
将代码保存为sms_forwarder.py。
连接Android设备,确保ADB可识别。
运行脚本:python sms_forwarder.py。
发送测试短信到手机,观察控制台输出和转发结果。
五、总结与展望
本文介绍了如何使用Python搭建短信转发器,实现验证码的自动接收、识别与转发。通过结合ADB工具、短信处理库和Web框架,我们构建了一个高效、稳定的系统。未来,可以进一步扩展功能,如支持更多类型的验证码识别、添加图形界面、实现云端部署等,让短信转发器更加智能、易用。

目录
打赏
0
1
1
2
98
分享
相关文章
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
84 0
零基础构建MCP服务器:TypeScript/Python双语言实战指南
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
110 0
当生成器遇上异步IO:Python并发编程的十大实战兵法
本文通过十大实战场景,详解Python中生成器与异步IO的高效结合。从协程演进、背压控制到分布式锁、性能剖析,全面展示如何利用asyncio与生成器构建高并发应用,助你掌握非阻塞编程核心技巧,提升I/O密集型程序性能。
65 0
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
49 0
|
11天前
|
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
36 0
Python爬虫实战:批量下载亚马逊商品图片
Python爬虫实战:批量下载亚马逊商品图片
自动发短信的软件,批量自动群发短信,手机号电话号生成器【python框架】
这个短信群发系统包含以下核心功能: 随机手机号生成器(支持中国号码) 批量短信发送功能(使用Twilio API)
批量发短信的软件,自动群发短信批量工具,手机号电话生成脚本插件【python】
该工具包含三个核心模块:短信发送核心功能、配置管理系统和命令行界面。使用时需先配置API密钥和短信模板
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
Python深浅拷贝全解析:从原理到实战的避坑指南
在Python开发中,深浅拷贝是处理对象复制的关键概念。直接赋值仅复制引用,修改副本会影响原始数据。浅拷贝(如切片、copy方法)创建新容器但共享嵌套对象,适用于单层结构或需共享子对象的场景;而深拷贝(copy.deepcopy)递归复制所有层级,确保完全独立,适合嵌套结构或多线程环境。本文详解二者原理、实现方式及性能考量,帮助开发者根据实际需求选择合适的拷贝策略,避免数据污染与性能浪费。
97 1

热门文章

最新文章

推荐镜像

更多
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等