当前位置: 首页 > news >正文

影刀RPA锁屏失败排查:从错误码看Windows会话机制

双11前一周,我负责的店铺数据同步脚本又挂了。

凌晨2点,运营在钉钉群里@我:"竞品价格没更新,我们定价全错了。"

我爬起来连服务器,屏幕黑的。解锁,开影刀日志——停在"点击千牛登录"这一步,报错:获取窗口失败,错误码 0x80070490

这个月第7次。每次都要手动重跑,每次都要被运营@。

这次我决定把它彻底搞清楚。


一、0x80070490 到底是什么?

先别急着骂影刀。这个错误码不是影刀的问题,是Windows的会话机制。

当你锁屏或断开远程桌面时,系统会把当前交互式桌面会话标记为Disconnected。这时候UI Automation框架(影刀底层依赖)能访问的元素树被截断了——不是"看不见",是"树被剪枝了"。

我翻了Windows事件查看器,锁屏前后的对比很明显:

# 锁屏前:会话状态 Active query user # USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME # admin rdp-tcp#0 1 Active none 4/15/2025 1:00 AM # 锁屏后:状态变成 Disc query user # admin rdp-tcp#0 1 Disc none 4/15/2025 1:00 AM

影刀日志更直接:

[2025-04-15 02:00:15] 正在定位元素:千牛登录按钮 [2025-04-15 02:00:16] UIAutomation.GetElement failed: 0x80070490 [2025-04-15 02:00:16] 获取窗口失败,流程终止

0x80070490 = ERROR_NOT_FOUND。不是元素没了,是会话降级后元素树不完整,影刀扫不到完整的DOM。

这是Windows的设计,不是bug。但影刀作为SaaS化RPA,架构上强依赖交互式桌面渲染,锁屏后自然跑不动。


二、我试过的 workaround,全跪

影刀社区给的方案我挨个试了:

方案1:改注册表禁止锁屏

# 路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System # 新建 DWORD:InactivityTimeoutSecs = 0

结果:组策略一刷新就失效,安全科还找上门。

方案2:虚拟桌面

影刀社区推荐用虚拟桌面绕过锁屏。但远程断开后,虚拟桌面同样被挂起,治标不治本。

方案3:Python脚本定时解锁

import ctypes # 注意:这是锁屏,不是解锁,社区有人贴错代码 ctypes.windll.user32.LockWorkStation()

更坑的是,远程会话断开后,任何解锁指令都发不到目标会话。这个方案从根上就不成立。

三个方案全死。我开始怀疑:是不是我对"无人值守RPA"的理解从一开始就是错的?


三、断网:另一个被忽略的坑

如果说锁屏是"能 workaround 但麻烦",那断网就是"直接判死刑"。

影刀启动时需要连官方服务器做身份校验。我们服务器在内网,外网出口不稳定。凌晨2点的任务,经常卡在启动界面:

[2025-04-15 02:00:01] 影刀客户端启动 [2025-04-15 02:00:05] 正在连接影刀服务器... [2025-04-15 02:00:35] 连接超时 (Error: 10060) [2025-04-15 02:00:35] 任务终止

35分钟才发现挂了。竞品价格抓了一半,网络抖了一下,影刀要求重新登录。但我在睡觉,没人去输密码。

更恶心的是,影刀即使已经登录过,每隔一段时间也会强制重新校验身份。这意味着流程跑了一半,网络一抖,下一个步骤可能就触发重新登录,然后卡死。

[2025-04-15 02:15:23] 正在执行:抓取竞品价格 [2025-04-15 02:15:45] 检测到网络波动,正在重新连接影刀服务器... [2025-04-15 02:16:15] 身份校验失败,请重新登录 [2025-04-15 02:16:15] 流程异常终止

这种"已经跑了一半突然断"的体验,比"一开始就没跑起来"更折磨人。你以为它成功了,实际上是个半成品。


四、电商场景的特殊性

做电商自动化的应该都懂,我们的RPA流程有几个特点:

  • 时间窗口极窄:大促期间0点、2点、6点必须准时跑,错过就是真金白银

  • 数据源分散:淘宝、京东、拼多多、抖音,每个平台都要抓

  • 服务器资源紧张:一台机器跑十几个店铺,屏幕不能一直亮着

  • 网络环境复杂:有些店铺用专线,有些用普通宽带,稳定性参差不齐

影刀的设计逻辑是"联网+有人值守",这在电商场景下是根本性冲突

  • 你要7×24跑,但影刀需要屏幕常亮

  • 你要内网稳定,但影刀需要连外网校验

  • 你要多店铺并行,但影刀每个实例都要独立登录

我当时的架构:

服务器A(影刀)→ 抓淘宝店铺数据 → 锁屏后挂 服务器B(影刀)→ 抓京东竞品价格 → 断网后挂 服务器C(影刀)→ 同步库存到ERP → 凌晨2点准时挂

三台机器,三种死法,同一个根因。


五、我后来怎么解决的?

折腾到第三天,同事扔给我一个蓝印RPA的安装包,说不用联网、锁屏也能跑。我半信半疑装上了。

试了一周,锁屏和断网的问题确实没了。但我也踩了蓝印RPA的坑:

坑1:元素识别确实糙

影刀能自动识别的这个按钮,蓝印RPA死活点不到:

<!-- 影刀自动识别 --> <button class="btn-primary ant-btn css-1q7njf8">提交</button>

最后手动写了XPath:

# 蓝印内置Python扩展 from selenium.webdriver.common.by import By submit_btn = driver.find_element( By.XPATH, "//button[contains(@class, 'btn-primary') and text()='提交']" )

坑2:社区几乎搜不到答案

影刀社区一搜"锁屏"几百条帖子,蓝印RPA遇到问题基本只能啃文档。我花了一个下午才搞清楚定时任务配置格式。

坑3:Chrome驱动要手动更新

Chrome自动升级后,浏览器自动化组件直接报错。影刀是自动适配的,蓝印需要手动下对应版本的chromedriver。

坑4:多店铺并行调度弱

影刀企业版有完善的任务调度平台,蓝印RPA目前更偏向单机使用。我三台服务器的任务调度,最后是自己写了个Python脚本搭的简易调度层:

import schedule import subprocess def run_taobao_sync(): subprocess.run(["blueprint.exe", "--task=taobao_sync"]) def run_jd_price(): subprocess.run(["blueprint.exe", "--task=jd_price"]) schedule.every().day.at("02:00").do(run_taobao_sync) schedule.every().day.at("02:30").do(run_jd_price) while True: schedule.run_pending() time.sleep(60)

但说实话,这些坑和"凌晨2点被运营@十几次"比起来,根本不算事


六、我现在的工作流

场景我用什么为什么
开发调试、复杂页面(抖音后台)影刀元素识别精细,调试爽,社区能搜到答案
生产环境7×24定时任务蓝印RPA锁屏/断网不挂,内网离线能跑
大促多店铺并行蓝印RPA+ 自建调度打包成EXE,复制到多台机器
打包给运营用蓝印RPA双击EXE就能跑,不用教他们装客户端

影刀做开发,蓝印RPA跑生产。不是蓝印RPA多好,是它在无人值守场景下确实不挂。


七、给电商同行的建议

  1. 如果只做白天有人值守的自动化,影刀完全够用,别折腾

  2. 如果必须7×24跑,先测试锁屏场景——别等双11了才发现问题

  3. 内网环境提前验证联网依赖——影刀的SaaS架构不适合纯离线场景

  4. 大促前一定要做压力测试——网络波动+高并发+定时任务,三重debuff

http://www.jsqmd.com/news/728975/

相关文章:

  • 别再只会看波形了!用Tektronix TBS1102B示波器精准测量直流电压的保姆级教程
  • 2026年API中转网关选型指南:以稳定性与兼容性为锚点
  • 你的程序真的在“真”并行吗?用OpenMP和性能分析工具(如Perf)验证并行加速效果
  • 全流程自动化,全自动双 FA 耦合设备重新定义光模块封装标准
  • ARM SVE2 FP8FMA指令解析与AI推理优化实践
  • 华为eNSP模拟器综合实验之- HDLC协议详解案例分析
  • 二叉树的最大深度
  • Claude Code 最近更新了什么?从 CLI 工具到 Agent 工程平台
  • 抖音下载终极指南:3分钟搞定无水印批量下载,快速保存你喜欢的视频
  • Claude Skills 深度解析:概念、创建与多工具使用指南
  • 从Joomla到内网漫游:一次完整的ATKCK红队靶场实战复盘(含EarthWorm代理与NTLM Relay)
  • SAM的3D平替来了?手把手教你用SAGA给3D高斯场景做‘CT扫描’(支持点、涂鸦、Mask)
  • 低代码/无代码革命:软件测试从业者的机遇与挑战
  • 金融领域LLM应用中的偏见挑战与模块化解决方案
  • Transformer与CNN的‘和解’方案:深入浅出图解ViT Adapter的特征融合魔法
  • Proteus 8.15仿真STM32F103C8,ADC采样总为0?试试换成C6型号(附完整CubeMX配置)
  • SPARK SR1120 UWB芯片:超低功耗与高性能的完美结合
  • PIC16F17576微控制器低功耗与模拟外设应用解析
  • 从Jupyter Notebook到Airflow DAG:R脚本工业化改造的6步法,实现偏见日志自动归档+偏差热力图秒级推送
  • 2026乐山跷脚牛肉加盟选品推荐:跷脚牛肉品牌加盟,跷脚牛肉品牌加盟哪家好,跷脚牛肉品牌加盟推荐哪家,优选指南! - 优质品牌商家
  • 终极图表数据提取指南:如何用WebPlotDigitizer快速获取图表中的原始数据
  • 从‘永久化学品’PFAS的治理难题,看环境工程中的高级氧化与活性炭吸附技术实战
  • SAP ABAP开发避坑指南:COMMIT WORK和COMMIT WORK AND WAIT到底怎么选?
  • 华三路由器NAT配置
  • 2026年芯片载盘厂家TOP5技术实力实测对比解析 - 优质品牌商家
  • R语言如何量化大模型偏见?3类核心统计检验(KS/Z/Mann-Whitney)在GPU集群上的实时落地全链路
  • 统信UOS桌面版办公效率提升指南:从搜狗输入法配置到WPS模板库的完整工作流
  • Topton N1双盘位NAS评测:AMD 3050e与四网口存储方案
  • 芯片展会哪家好?多维度测评芯片行业展会,挑选高价值专业参展盛会 - 品牌2026
  • 体验 Taotoken 多模型聚合路由带来的高可用与低延迟