一个基于 Python 的自动化验证码识别和短信验证码测试工具,使用 ddddocr 进行图片验证码识别。
本项目实现了自动化的图片验证码识别和手机验证码发送功能,支持单次测试和批量轰炸测试模式,并提供了灵活的手机号输入方式(单个输入或TXT文件批量输入)。
- ✅ 自动图片验证码识别:使用 ddddocr 库进行高精度验证码识别
- ✅ 多种图片格式支持:支持 base64 字符串、bytes 数据、PIL Image 对象
- ✅ 多种手机号输入方式:支持单个手机号输入和TXT文件批量输入
- ✅ 灵活的测试模式:
- 单次测试模式:执行一次完整的验证码识别和短信发送流程
- 短信轰炸模式:支持单个手机号循环轰炸或TXT文件批量轰炸
- ✅ 可配置接口:通过 config.py 文件配置API地址和请求头
- ✅ 实时统计:显示成功/失败次数统计
- ✅ 交互式菜单:友好的命令行交互界面
infohongzha/
├── README.md # 项目说明文档
├── config.py # 配置文件(API地址和请求头)
├── verifycode.py # 验证码识别模块
├── getcode.py # 获取图片验证码模块
├── main.py # 主程序(交互式菜单和测试功能)
├── phones.txt # 示例手机号文件
├── requirements.txt # 项目依赖
├── .gitignore # Git忽略文件
└── venv/ # Python 虚拟环境
配置文件,包含API地址和请求头配置。
主要配置:
VERIFYCODE_URL: 验证码接口地址BOMB_URL: 爆破接口地址HEADERS: 请求头配置
验证码识别模块,使用 ddddocr 库实现图片验证码的自动识别。
主要函数:
recognize_verifycode(img_encoded): 识别图片验证码- 支持输入格式:base64 字符串、bytes 数据、PIL Image 对象
- 返回识别出的验证码文本
获取图片验证码模块,从指定 API 获取验证码图片并识别。
主要函数:
getcode(): 获取并识别图片验证码- 返回:
(verificationCode, verificationCodeId)元组
- 返回:
主程序,提供交互式菜单和多种测试功能。
主要函数:
getphonecode(phone, verificationCode, verificationCodeId): 发送手机验证码single_test(phone): 单次测试模式bomb_test_single(phone, count): 单个手机号循环轰炸bomb_test_file(file_path): 从TXT文件读取手机号,每个手机号执行一次get_phone_input(): 获取手机号输入(单个或文件)main(): 交互式主菜单
- Python 3.7+
- requests
- ddddocr
- Pillow
- 克隆或下载项目
cd e:\project\infohongzha- 创建虚拟环境(推荐)
python -m venv venv- 激活虚拟环境
Windows:
venv\Scripts\activateLinux/Mac:
source venv/bin/activate- 安装依赖
pip install -r requirements.txt或手动安装:
pip install requests ddddocr Pillowpython main.py启动程序后,会显示以下菜单:
==================================================
手机验证码测试工具
==================================================
1. 单次测试
2. 短信轰炸测试
0. 退出
==================================================
请选择模式 (0/1/2):
程序支持两种手机号输入方式:
- 单个手机号输入:直接输入一个手机号码
- TXT文件批量输入:从TXT文件中读取多个手机号码
执行一次完整的测试流程:
单个手机号输入:
- 选择单个手机号输入方式
- 输入手机号
- 自动获取并识别图片验证码
- 发送手机验证码
- 显示测试结果
TXT文件批量输入:
- 选择从TXT文件读取方式
- 输入TXT文件路径
- 程序读取文件中的所有手机号
- 对每个手机号执行一次完整的测试流程
- 显示统计结果
示例:
请选择模式 (0/1/2): 1
请选择手机号输入方式:
1. 单个手机号
2. 从TXT文件读取
请选择 (1/2): 1
请输入手机号: 15332261234
==================================================
开始单次测试 - 手机号: 15332261234
==================================================
识别出的验证码: ABCD
状态码: 200
响应内容: {"code":"0","msg":"成功"}
✓ 测试成功
提供两种轰炸方式:
单个手机号循环轰炸:
- 选择单个手机号输入方式
- 输入手机号
- 输入轰炸次数
- 确认操作
- 自动循环执行指定次数
- 显示统计结果
TXT文件批量轰炸:
- 选择从TXT文件读取方式
- 输入TXT文件路径
- 确认操作
- 程序读取文件中的所有手机号
- 对每个手机号执行一次轰炸(不循环)
- 显示统计结果
示例(单个手机号循环轰炸):
请选择模式 (0/1/2): 2
请选择手机号输入方式:
1. 单个手机号
2. 从TXT文件读取
请选择 (1/2): 1
请输入手机号: 15332261234
请输入轰炸次数: 10
确认对 15332261234 进行 10 次轰炸?(y/n): y
==================================================
开始短信轰炸测试 - 手机号: 15332261234
轰炸次数: 10
==================================================
[第 1/10 次轰炸]
...
[第 10/10 次轰炸]
==================================================
轰炸测试完成
总计: 10 次
成功: 8 次
失败: 2 次
==================================================
示例(TXT文件批量轰炸):
请选择模式 (0/1/2): 2
请选择手机号输入方式:
1. 单个手机号
2. 从TXT文件读取
请选择 (1/2): 2
请输入TXT文件路径: phones.txt
将从文件 phones.txt 读取手机号,每个手机号执行一次轰炸
确认执行?(y/n): y
==================================================
从文件读取到 3 个手机号
==================================================
[处理第 1/3 个手机号: 13800138000]
...
[处理第 3/3 个手机号: 15000150000]
==================================================
批量轰炸测试完成
总计: 3 个手机号
成功: 2 个
失败: 1 个
==================================================
退出程序。
TXT文件格式要求:
- 每行一个手机号
- 支持中文注释(以#开头)
- 空行会被忽略
示例(phones.txt):
# 手机号列表文件
# 每行一个手机号,支持中文注释
# 示例:
13800138000
13900139000
15000150000
通过修改 config.py 文件可以自定义API地址和请求头:
# 验证码接口地址
VERIFYCODE_URL = "https://example.com/api/getVerificationCode"
# 爆破接口地址
BOMB_URL = "https://example.com/api/getPhoneCode"
# 请求头配置
HEADERS = {
'User-Agent': 'Your User Agent',
'Accept': 'application/json, text/plain, */*',
# 其他请求头...
}程序使用以下 API 接口:
- 获取验证码:
POST https://ljiei.hrbeu.edu.cn/api/sysUser/getVerificationCode - 发送手机验证码:
POST https://ljiei.hrbeu.edu.cn/api/sysUser/getPhoneCode
- 本工具仅供学习和测试使用
- 请勿用于非法用途或骚扰他人
- 使用前请确保遵守相关法律法规
- 建议在测试环境中使用
- 请保护好个人隐私信息
- 使用TXT文件批量轰炸时,每个手机号只执行一次,不会循环轰炸
- 检查网络连接是否正常
- 确认 ddddocr 库已正确安装
- 查看验证码图片是否清晰
- 检查手机号格式是否正确
- 确认验证码识别是否准确
- 查看网络请求响应状态码
- 检查文件路径是否正确
- 确认文件编码为UTF-8
- 检查文件格式是否符合要求
- 确认 Python 版本符合要求
- 检查所有依赖库是否已安装
- 查看错误日志信息
- 语言: Python 3
- HTTP 请求: requests
- 验证码识别: ddddocr
- 图像处理: Pillow (PIL)
本项目仅供学习交流使用。
如有问题或建议,欢迎提出 Issue。
最后更新: 2024