# 影刀RPA实操指南:处理验证码的几种

影刀RPA实操指南:处理验证码的几种方案——打码平台/手动介入/自动识别

采集时突然弹出滑块验证码、图形验证码、短信验证码,流程直接卡死。
问题:验证码是自动化最大的拦路虎。

解决方法:根据验证码类型选择不同方案——打码平台、手动介入、OCR识别、短信转发。


一、验证码的四种类型与应对策略

picture.image

验证码类型常见平台推荐方案成本
图形数字/字母登录、注册打码平台API0.5-2分/次
滑块拼图淘宝、拼多多打码平台(如超级鹰)或手动2-5分/次

picture.image | 文字点选 | 京东、12306 | 打码平台(如数美) | 5-10分/次 | | 短信验证码 | 手机绑定、登录 | 接码平台或转发 | 0.1-1元/条 |

优先顺序
能避免就避免(如保持登录态) → 手动介入 → 打码平台 → 放弃该账号

picture.image


二、方案一:避免验证码(最省心)

picture.image 验证码出现是因为触发风控。降低触发概率比处理验证码更高效。

策略1:保持登录态
不频繁登出登录,用浏览器用户数据目录保存Cookie,一个月登录一次。

picture.image 策略2:降低操作速度
每次点击、翻页间隔随机化(2~5秒),不要固定1秒一次。

策略3:限制单次采集量
淘宝一次采10页以内,不要贪多。

picture.image

策略4:使用高质量代理
住宅代理比机房代理触发概率低。


三、方案二:手动介入(半自动,适合低频)

场景:每天只跑一次,验证码偶尔出现。流程遇到验证码暂停,等你手动处理完再继续。

实现方式
在流程中判断验证码是否出现,如果出现,弹窗提示并等待人工处理。

# 判断验证码弹窗是否出现
# 捕获元素:验证码弹窗的关闭按钮或验证码图片

# 如果验证码出现:
#   1. 输出日志:“验证码出现,等待人工处理”
#   2. 弹窗提示:“请手动完成验证码,完成后点击确定”
#      指令:弹窗提示(带“确定”按钮)
#   3. 固定等待(等人处理完)
#   4. 继续流程

# 如果没出现,正常执行

弹窗指令:指令面板搜索“弹窗提示”或“消息框”。
设置标题、内容、按钮(确定/取消)。

缺点:需要人守在电脑前。


四、方案三:打码平台(全自动,推荐)

picture.image

picture.image 原理:把验证码截图发送到打码平台,平台返回识别结果,影刀自动填入。

常用打码平台

  • 超级鹰(支持图形、滑块、坐标点选)
  • 图鉴(便宜,识别率尚可)
  • 云打码(老牌)
  • 2Captcha(国际平台,支持reCAPTCHA)

以超级鹰为例的集成流程

# 步骤1:截图验证码区域
#    捕获验证码图片元素(img标签或div背景)
#    屏幕截图 → 截取该元素区域 → 保存到本地 temp_captcha.png

# 步骤2:调用超级鹰API(用Python代码)
#    需要安装 requests 库(创业版及以上)
#    发送图片,获取识别结果

# 步骤3:将识别结果填入输入框
#    输入文本(验证码输入框)→ 内容为 {captcha_result}

# 步骤4:点击提交/确认

Python代码示例(超级鹰图形验证码)

picture.image

picture.image

import requests
import base64
import json

# 超级鹰账号配置
username = "your_username"
password = "your_password"
soft_id = "123456"  # 软件ID,注册可得

# 读取验证码图片
with open("C:\\temp\\captcha.png", "rb") as f:
    img_base64 = base64.b64encode(f.read()).decode()

# 请求识别
url = "http://api.superying.cn/upload"
data = {
    "user": username,
    "pass": password,
    "softid": soft_id,
    "codetype": 1003,  # 1003=英文数字验证码,其他类型查文档
    "img_base64": img_base64
}
response = requests.post(url, data=data).text
result = json.loads(response)

if result["err_no"] == 0:
    captcha_code = result["result"]
    set_var("captcha_code", captcha_code)
else:
    set_var("captcha_code", "")

滑块验证码:超级鹰需要指定坐标类型,返回的是滑块移动的像素距离,需要用ADB或鼠标拖动指令实现。


五、方案四:OCR识别(免费但识别率低)

适用:简单数字、字母验证码,无干扰线、不变形。

工具:Tesseract OCR + Python

import pytesseract
from PIL import Image

# 需要安装:pip install pytesseract pillow
# 还需要安装Tesseract引擎

img = Image.open("captcha.png")
captcha_text = pytesseract.image_to_string(img, config='--psm 8')
# --psm 8 表示单个单词,适合验证码
set_var("captcha_ocr", captcha_text.strip())

缺点:稍微复杂点的验证码(有干扰线、彩色背景)识别率低,不如打码平台。


六、短信验证码的处理

场景:登录时需要手机短信验证码。

解决方案

方案A:接码平台

注册接码平台(如云短信、接码号),获取临时手机号,平台会显示收到的短信内容。
影刀通过接码平台的API获取验证码。

方案B:邮件/短信转发

如果是自己的手机号,可以设置短信转发到邮箱(如iPhone的“短信转发”+ 企业微信机器人),然后影刀读取邮箱内容提取验证码。

方案C:手动输入

低频场景,弹窗提示让用户手动输入验证码。

# 弹窗输入验证码
# 指令:输入对话框
# 标题:“请输入手机验证码”
# 输出到:{sms_code}

七、实战:集成打码平台的翻页采集流程

A_Main
  ├─ 1. 打开网页、登录
  ├─ 2. 条件循环(翻页)
  │      ├─ 采集当前页数据
  │      ├─ 点击下一页
  │      ├─ 判断是否出现验证码
  │      │      ├─ 如果出现:调用子流程 C_HandleCaptcha
  │      │      └─ 如果成功处理,继续;否则跳出循环
  │      └─ 等待页面加载
  └─ 3. 保存数据

C_HandleCaptcha(子流程)
  ├─ 1. 截图验证码区域
  ├─ 2. 调用超级鹰API识别
  ├─ 3. 输入验证码
  ├─ 4. 点击确认
  ├─ 5. 等待验证结果
  │      ├─ 如果成功:返回成功标志
  │      └─ 如果失败:重试(最多3次)
  └─ 6. 返回

八、避坑指南

说明解决方法
验证码截图区域不对截到了整个页面或空白先捕获验证码图片元素,指定元素截图
打码平台识别慢网络或平台问题设置超时时间(10-15秒),超时后重试
滑块验证码移动不准确坐标计算错误使用“鼠标拖动”指令,起点和终点坐标精确
频繁调用打码被风控同一IP大量请求轮换代理IP
验证码处理完流程找不到后续元素页面刷新了重新获取页面对象或刷新元素列表

影刀截图指定元素
屏幕截图指令 → 截图区域选择“指定元素” → 捕获验证码图片所在的元素(不是弹窗,是图片本身)。


九、影刀专属操作清单

操作精确指令说明
判断验证码出现判断元素是否存在捕获验证码弹窗或图片元素
截图验证码屏幕截图 → 指定元素截取验证码图片区域
弹窗提示等待人工弹窗提示输入对话框半自动方案
模拟输入验证码输入文本填入识别结果
滑块拖动鼠标拖动模拟移动点击需要坐标
Python调用APIPython代码发送打码平台请求

版本差异:社区版打码平台需要自己写Python代码,不支持内置插件。
创业版有官方打码插件(需额外付费),可简化集成。


常见问题速查

问题原因解决方法
超级鹰返回“图片大小超限”截图太大先压缩图片再base64
滑块验证码移动后还是失败轨迹太机械随机加点停顿和偏移
短信验证码收不到号码被运营商拦截换接码平台或用真实手机号
验证码处理完继续报错页面状态已变重新获取元素或刷新页面

推荐资源

最后一句:验证码处理是RPA进阶的必修课。
最简单的方案是“保持登录态”避免验证码;必须处理时,打码平台最省心。
花几块钱买几百次识别积分,能省下大量人工盯着的时间。


作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论