影刀RPA 短信验证码自动接收:Webhook与API集成实战
拼多多店群自动化报活动上架影刀RPA 短信验证码自动接收Webhook与API集成实战作者林焱什么情况用这个做自动化测试和运维的同学经常碰到这个需求注册账号要收短信验证码、登录要收验证码、操作确认要收验证码。流程跑到一半卡在验证码输入界面必须人工去看手机——自动化的最后一公里断在这里。还有另一个场景监控告警。你的业务系统出现异常后自动发短信通知相关人员或者需要确认对方收到了通知才继续执行后续流程。不管你是用接码平台的虚拟号还是公司自有的短信通道把短信验证码的接收和处理接入影刀RPA流程才能真正实现端到端自动化。怎么做第一步选择短信接收方案根据你的场景选择方案方案A接码平台API适合测试、批量注册用接码平台如短信接码平台的开放API获取手机号→等待短信→获取验证码。流程全自动。方案B自有短信通道Webhook适合生产环境如果你们公司有短信通道阿里云短信、腾讯云短信等可以配置上行短信Webhook用户回复的短信自动推送到你的接口。方案C安卓手机转发零成本方案手机上装一个短信转发App如SMS Forwarder把收到的短信通过HTTP推送到影刀的Webhook接收地址。本文重点讲方案B和方案C因为这两种最通用。第二步搭建短信Webhook接收端影刀本身没有内置Webhook服务器但可以通过Python节点启动一个轻量HTTP服务来接收外部推送fromhttp.serverimportHTTPServer,BaseHTTPRequestHandlerimportjsonimportthreadingimportqueue# 全局消息队列sms_queuequeue.Queue()classSMSWebhookHandler(BaseHTTPRequestHandler):短信Webhook接收处理器defdo_POST(self):content_lengthint(self.headers.get(Content-Length,0))bodyself.rfile.read(content_length)try:datajson.loads(body)# 提取短信信息sms_info{手机号:data.get(phone,data.get(sender,)),内容:data.get(content,data.get(message,)),时间:data.get(time,data.get(timestamp,)),原始数据:data}sms_queue.put(sms_info)# 返回成功响应self.send_response(200)self.send_header(Content-Type,application/json)self.end_headers()self.wfile.write(json.dumps({code:0,msg:ok}).encode())exceptExceptionase:self.send_response(400)self.end_headers()defdo_GET(self):# 健康检查self.send_response(200)self.end_headers()self.wfile.write(bOK)defstart_webhook_server(port8899):启动Webhook服务器后台线程serverHTTPServer((0.0.0.0,port),SMSWebhookHandler)threadthreading.Thread(targetserver.serve_forever,daemonTrue)thread.start()print(f短信Webhook服务已启动端口{port})returnserver,sms_queue第三步在影刀流程中等待并提取验证码影刀流程操作【Python节点】→ 启动Webhook服务启动后得到一个消息队列变量 【循环】→ 等待短信到达 【Python节点】→ 检查队列中是否有新消息 【IF】→ 有消息提取验证码 【Python节点】→ 正则提取6位数字验证码 【填写】→ 将验证码填入目标输入框 【跳出循环】 【ELSE】→ 没消息 【等待】→ 等待2秒 【继续循环】Python节点中提取验证码importredefextract_verification_code(sms_content): 从短信内容中提取验证码 支持多种常见格式 - 【xx平台】验证码123456 - 您的验证码是123456 - code: 123456 - 123456xx平台验证码 # 常见验证码模式patterns[r验证码[:]\s*(\d{4,6}),# 验证码123456r验证码[是为]\s*(\d{4,6}),# 验证码是123456rcode[:]\s*(\d{4,6}),# code: 123456r码[:]\s*(\d{4,6}),# 动态码123456r【.{2,8}】\s*(\d{4,6}),# 【xx平台】123456r(?!\d)(\d{6})(?!\d),# 独立的6位数字兜底]forpatterninpatterns:matchre.search(pattern,sms_content,re.IGNORECASE)ifmatch:returnmatch.group(1)returnNone第四步影刀Webhook接收指令如果你的影刀账号支持企业版或服务器版可以直接用影刀内置的【Webhook接收】指令——不过很多场景下直接写Python更灵活。这里给出一个完整的前端到填写的流程1. 【Python节点】→ 启动接收服务start_webhook_server 2. 【获取变量】→ 拿到sms_queue对象 3. 【打开网页】→ 目标网站的注册/登录页 4. 【填写】→ 手机号 5. 【点击】→ 获取验证码按钮 6. 【For次数循环】→ 最多循环60次每次等2秒共等2分钟 7. 【Python节点】→ 检查队列try_get_sms 8. 【IF】→ code不为空 9. 【填写】→ 填入验证码输入框 10. 【跳出循环】 11. 【等待】→ 2秒 12. 【IF】→ code仍为空 13. 【记录日志】→ 验证码超时未收到 14. 【异常处理】等待取码的Python节点deftry_get_sms(sms_queue,target_phoneNone,timeout_seconds2): 尝试从队列中获取短信非阻塞 返回 (验证码, 短信内容) 或 (None, None) try:smssms_queue.get(timeouttimeout_seconds)# 如果指定了目标手机号过滤iftarget_phoneandtarget_phonenotinsms[手机号]:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0dcd4f552a8a415b9f9b12a175472353.png#pic_center)sms_queue.put(sms)# 放回去不是给我们的returnNone,Nonecodeextract_verification_code(sms[内容])returncode,sms[内容]exceptqueue.Empty:returnNone,None第五步对接阿里云短信上行如果你们用的是阿里云短信服务可以配置上行消息推送importtimeimporthashlibimporthmacimportbase64defget_aliyun_sms_up_messages(access_key_id,access_key_secret,phone_number,max_wait120): 通过阿里云短信API查询上行消息用户回复的短信 适合生产环境无需自建Webhook importrequests# 阿里云短信上行消息查询API# 注意需要短信服务已开通上行功能# 这里用一种更简单的方案使用阿里云短信的回执查询# 实际使用时建议配置MNS消息队列接收上行短信returnNone# 简化示例实际需要处理签名和API调用第六步安卓手机短信转发方案零成本如果你只是个人使用买接码平台不划算可以用安卓手机做短信转发在安卓手机上安装短信转发器App如SMS Forwarder、“Tasker 插件”配置转发规则匹配包含验证码的短信 → POST到你电脑的IP:8899确保网络可达手机和电脑在同一局域网或者用内网穿透转发规则配置示例SMS Forwarder的JSON配置{rules:[{sender_contains:,content_contains:验证码,forward_url:http://你的电脑IP:8899/sms,forward_method:POST,forward_format:{phone:{{sender}},![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2b984927fefb4eb787a40b1286720f4c.png#pic_center)content:{{content}},time:{{time}}}}]}有什么坑坑一防火墙/网络隔离现象手机发了短信电脑上Webhook没收到。原因手机和电脑不在同一网络或者Windows防火墙拦截了入站连接。解决确保手机和电脑在同一个WiFi以管理员身份运行以下命令开放端口# PowerShell管理员模式New-NetFirewallRule-DisplayName影刀短信Webhook-Direction Inbound-LocalPort 8899-Protocol TCP-Action Allow如果不方便配防火墙用内网穿透工具ngrok、frp暴露公网地址坑二多线程安全问题现象流程跑了几天后偶尔出现验证码填错或消息丢失。原因Python的queue.Queue本身是线程安全的但如果你在多个地方同时读队列可能产生竞态。解决确保只有一个消费者在读取队列。如果影刀流程中多个并行分支需要共享短信队列用锁保护TEMU店群矩阵自动化运营核价报活动importthreading sms_lockthreading.Lock()defsafe_get_sms(sms_queue,lock):withlock:try:returnsms_queue.get(timeout1)exceptqueue.Empty:returnNone坑三短信格式千奇百怪现象有的短信验证码提取不出来。原因不同平台发送的验证码短信格式差异大“您的验证码是”、“dynamic code”、“安全码”、“OTP”…花样百出。解决在正则匹配中不断积累模式同时保留独立的6位数字作为兜底策略。建议在日志中记录所有未能提取验证码的短信原文每周更新匹配规则# 持续积累的模式库PATTERNS{验证码:[r验证码[:是]\s*(\d{4,8}),r码[:]\s*(\d{4,8})],英文:[rcode[:]\s*(\d{4,8}),rOTP[:]\s*(\d{4,8})],平台:[r【.{2,10}】\s*(\d{4,8})],通用:[r(?!\d)(\d{4,8})(?!\d)],}坑四Webhook服务不稳定现象Webhook服务器偶尔崩溃流程一直等不到短信。原因Python的http.server比较简单高并发或异常请求可能导致崩溃。解决在流程中增加心跳检测如果Webhook挂了自动重启importrequestsdefhealth_check(port8899):检查Webhook是否存活try:resprequests.get(fhttp://127.0.0.1:{port},timeout2)returnresp.status_code200except:returnFalse# 在循环中每轮检查# 【IF】→ health_check()返回False → 【Python节点】→ 重启start_webhook_server()坑五验证码过期时间现象有时候收到了验证码但填入后被提示验证码已过期。原因Webhook接收→队列等待→流程提取→填写输入框中间可能过了几十秒而有些平台的验证码有效期只有60秒。解决流程中减少不必要的等待优先处理验证码填写到队列中的消息记录时间戳超过50秒的消息直接丢弃如果超时自动点击重新发送不等人工操作importtimedeftry_get_sms_with_ttl(sms_queue,max_age_seconds50):获取短信自动丢弃过期消息whileTrue:try:smssms_queue.get(timeout1)agetime.time()-sms.get(接收时间,0)ifagemax_age_seconds:codeextract_verification_code(sms[内容])returncode,sms[内容]else:# 验证码已过期丢弃continueexceptqueue.Empty:returnNone,None总结短信验证码自动接收是实现注册→登录→操作全链路自动化最关键的一环。三种方案各有适用场景接码平台适合批量测试、自有通道Webhook适合生产环境、手机转发适合个人零成本使用。无论选哪种核心思路都是接收→队列→提取→填写四步走其中队列机制是关键——它让异步的短信接收和同步的流程执行解耦了。

相关新闻

C++实现俄罗斯方块:从核心算法到图形化实战

C++实现俄罗斯方块:从核心算法到图形化实战

1. 项目概述:从经典游戏到现代编程实践 俄罗斯方块,这个诞生于上世纪80年代的经典游戏,几乎成了每个程序员学习图形编程或游戏开发时绕不开的“Hello World”。但别小看它,一个完整的俄罗斯方块实现,远不止是几行代码让…

2026/7/22 9:59:36阅读更多 →
Appium抓包技术:移动应用测试与安全分析实战

Appium抓包技术:移动应用测试与安全分析实战

1. Appium抓包技术全景解析在移动应用测试领域,Appium已经成为自动化测试的代名词。但很多人不知道的是,这个开源工具链还能实现强大的抓包功能——就像给移动应用装上X光机,让所有网络通信无所遁形。我曾在金融类App的测试中,通过…

2026/7/22 9:57:36阅读更多 →
IoT 前端长连接架构深度复盘:WebSocket 连接池管理与多路数据流分层设计

IoT 前端长连接架构深度复盘:WebSocket 连接池管理与多路数据流分层设计

IoT 前端长连接架构深度复盘:WebSocket 连接池管理与多路数据流分层设计 一、物联网大屏背后的连接灾难:断连风暴与数据雪崩 物联网监控中控屏(通常是一块 4K 大屏或指挥中心的拼接屏)需要同时展示数百台设备的实时状态。每台设备…

2026/7/22 9:57:36阅读更多 →
TI VPDMA中断掩码寄存器详解:嵌入式视频处理中断管理实战

TI VPDMA中断掩码寄存器详解:嵌入式视频处理中断管理实战

1. 项目概述 在嵌入式视频处理系统的开发中,尤其是面对德州仪器(TI)这类高性能SoC时,中断管理往往是决定系统实时性和稳定性的“胜负手”。我处理过不少项目,从简单的视频采集到复杂的多路画中画合成,一个共…

2026/7/22 11:13:49阅读更多 →
高考英语熟词生义系统训练方案

高考英语熟词生义系统训练方案

1. 项目背景与核心价值 作为一名带过五届高三毕业班的英语教师,我深知"熟词生义"是高考英语备考中最容易被忽视却又至关重要的环节。这个看似简单的概念,实则是学生阅读理解失分的重灾区——根据2021年高考英语试卷分析,全国卷阅读…

2026/7/22 11:13:49阅读更多 →
远程 MySQL 下「附近球馆」接口从 5 秒优化至 300ms 实战

远程 MySQL 下「附近球馆」接口从 5 秒优化至 300ms 实战

摘要 Spring Boot 远程库场景里,一次列表接口串行 4 次 SQL,冷启动可达数秒。记录一次把 count 砍掉、改 JOIN 聚合、前端并行请求后的效果。 正文(Markdown,可直接贴 CSDN) 远程 MySQL 下,把「附近球馆」…

2026/7/22 11:13:49阅读更多 →
TM4C1292NCZAD模拟比较器:从原理到实战的嵌入式电压监控方案

TM4C1292NCZAD模拟比较器:从原理到实战的嵌入式电压监控方案

1. 项目概述与核心价值在嵌入式系统开发,尤其是涉及模拟信号监控、电源管理或电机控制的场景里,我们经常需要判断一个电压是否超过了某个预设的阈值。你可能会想到用一颗外部的电压比较器芯片,比如LM393,配合电阻分压网络来实现。…

2026/7/22 11:13:49阅读更多 →
包装运输测试斜面冲击为何大包装件做的更多?ISTA3E斜面冲击更受大家选择的原因?

包装运输测试斜面冲击为何大包装件做的更多?ISTA3E斜面冲击更受大家选择的原因?

ISTA 3E 是托盘单元化集合包装专用运输测试标准,斜面冲击作为标准中二选一的强制水平冲击项目,在大型木箱、托盘整件测试中使用频率远高于小型纸箱,主要由标准范围、工况匹配、设备适配、包装结构四大维度决定。一、标准适用范围限定测试对象…

2026/7/22 11:13:49阅读更多 →
运维!明明掌握Linux、云、网络多年的功底,却只能困在重复工作中,未免太可惜

运维!明明掌握Linux、云、网络多年的功底,却只能困在重复工作中,未免太可惜

运维!明明掌握Linux、云、网络多年的功底,却只能困在重复工作中,未免太可惜 不少运维人,哪怕是早九晚六也会有的遗憾:深耕运维几年,虽然算是铁饭碗,却很难升上去。明明就吃透Linux操作系统、云…

2026/7/22 11:11:49阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →