影刀RPA 网页验证码的识别与绕过:滑块拼图点选的自动化方案

发布时间:2026/7/23 0:56:19
影刀RPA 网页验证码的识别与绕过:滑块拼图点选的自动化方案 影刀RPA 网页验证码的识别与绕过滑块拼图点选的自动化方案验证码是RPA的天敌——它被设计出来就是为了挡自动化的。本文不讲暴力破解讲的是在合法业务场景下你自己的系统、你授权的账号怎么处理验证码。核心策略就一条能不碰就不碰必须碰就上OCR或打码平台。先判断这个验证码你真的需要过吗很多新手看到验证码就想着自动识别其实应该先问自己三个问题问题1能不能保持登录态避免反复触发验证码你之所以频繁遇到验证码很可能是因为每次都重新登录。如果用Cookie保持登录态登录一次管一星期验证码出现频率就大幅降低。问题2能不能用API代替页面操作很多网站有开放API或者内部接口。API调用通常不需要验证码。优先探索API方案实在没有API再考虑页面自动化。问题3能不能用手动介入来解决验证码不是每时每刻都出现。如果你的流程一天只跑一次在遇到验证码时暂停、发个通知、你手动输入一下就行了没必要投入大量时间做自动识别。结论只有当你每天需要频繁通过验证码、且无法回避时才值得投入自动化方案。方案一手动介入最简单流程碰到验证码时暂停执行通过某种方式通知你你来手动填入或点击。流程遇到验证码时的处理1.【截图】→ 保存验证码区域截图2.【弹出提示框】请手动完成验证码后点击继续3.【等待】→ 等待你操作或等待某个标志位变化4.你手动操作完成后流程继续这种方式适合一天跑一次的流程、只有偶尔才出现验证码的场景、不需要全无人值守的任务。拼多多店群自动化报活动上架如果你的流程是通过定时任务自动跑的手动介入就不合适了。这时候考虑下面的方案。方案二OCR识别文本验证码文本型验证码四位数字字母的组合可以用OCR识别。Python节点里装个pytesseract或ddddocr# 用ddddocr专门为验证码优化过的OCR库免费importddddocr ocrddddocr.DdddOcr()# captcha_image_path 是影刀截图保存的验证码图片路径withopen(rC:\temp\captcha.png,rb)asf:img_bytesf.read()resultocr.classification(img_bytes)print(f识别结果{result})# 把result传回影刀填入验证码输入框ddddocr的准确率取决于验证码的复杂度简单数字字母无干扰线90%带干扰线的数字字母60%-80%扭曲变形干扰背景噪点40%以下对于后面两种OCR就不太可靠了。这时候考虑打码平台。方案三打码平台第三方识别打码平台是人工AI混合的验证码识别服务。你把验证码图片发过去几秒内返回识别结果。常用平台打码兔、图鉴、超级鹰等。收费标准通常几分钱一条。importrequestsimportbase64# 超级鹰示例defchaojiying_recognition(image_path,code_type1902):withopen(image_path,rb)asf:img_base64base64.b64encode(f.read()).decode()data{user:你的账号,pass:你的密码,softid:你的软件ID,codetype:code_type,# 1902 四位数字字母file_base64:img_base64}resprequests.post(http://upload.chaojiying.net/Upload/Processing.php,datadata)resultresp.json()ifresult[err_no]0:returnresult[pic_str]# 识别结果else:returnNone打码平台的注意事项响应时间通常2-5秒你的流程需要等待准确率不是100%有10%-20%的失败率需要加重试需要充值但成本很低几分钱一次API Key不要硬编码在流程里用环境变量或加密存储方案四滑块验证码滑块验证码是目前最常见的类型——拖一个拼图块滑到缺口位置。滑块的自动化难点需要计算滑块到缺口的距离滑动速度不能是匀速会被反爬检测识别为机器人滑动轨迹需要模拟人类行为先快后慢、有微小抖动基础方案计算距离模拟滑动。# 步骤1截图计算滑块到缺口的像素距离# 距离计算需要用到图像处理不是本文重点distancecalculate_distance(screenshot_path)# 步骤2在影刀里用Python节点模拟拖拽fromseleniumimportwebdriverfromselenium.webdriver.common.action_chainsimportActionChainsimportrandomimporttime# 获取滑块元素通过影刀的浏览器驱动sliderdriver.find_element_by_class_name(slider-btn)# 模拟人类拖拽轨迹actionActionChains(driver)action.click_and_hold(slider).perform()# 分段移动先快后慢加随机抖动total_distancedistance current0whilecurrenttotal_distance:ifcurrenttotal_distance*0.6:# 前60%快速移动moverandom.randint(8,15)elifcurrenttotal_distance*0.9:# 中间30%减速moverandom.randint(3,8)else:# 最后10%缓慢微调moverandom.randint(1,3)action.move_by_offset(move,random.randint(-2,2)).perform()currentmove time.sleep(random.uniform(0.01,0.03))# 到达目标位置后稍微回退一下再松手人类行为特征action.move_by_offset(random.randint(-3,-1),0).perform()time.sleep(random.uniform(0.05,0.1))action.release().perform()但是实话实说滑块验证码的绕过成功率取决于反爬策略的严格程度。简单的滑块比如一些企业内部系统80%能过复杂滑块比如极验、网易易盾自己搞基本过不了需要用打码平台或直接手动介入。方案五点选验证码“请依次点击图中的交通灯”——这种点选验证码更麻烦。处理思路截图验证码区域发给打码平台支持点选类型的平台平台返回坐标列表你的流程按坐标依次点击自己用图像识别做点选验证码投入产出比太低。这种情况直接上打码平台。方案六使用已登录的浏览器Profile这是最推荐的方式。不需要识别验证码因为根本不会触发。影刀支持加载已有的浏览器Profile用户数据目录里面有你的Cookie、登录态、浏览器指纹。如果你用本地浏览器手动登录一次目标网站记住密码、勾选保持登录然后把浏览器的用户数据目录给影刀用——影刀打开的就是你手动登录过的那个浏览器状态验证码大概率不会出现。TEMU店群矩阵自动化运营核价报活动具体做法在影刀的浏览器配置里指定一个自定义的用户数据目录打开网页时 → 高级设置 → 浏览器用户数据目录 → 指定路径 比如C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Profile 1但注意影刀的浏览器不能和本地正在运行的浏览器共用同一个Profile。你需要用影刀专用的Profile——先手动登录一次关掉再用影刀打开。组合策略降级方案实际场景中最好做一个降级链遇到验证码 ↓ 尝试方案1Cookie/Profile免验证日常不触发 ↓ 触发验证码了 尝试方案2OCR自动识别低成本适用于简单验证码 ↓ 识别失败 尝试方案3打码平台花钱但省事 ↓ 打码也失败 方案4暂停 → 发通知 → 手动介入这样既不会在一个环节上死磕也保证了流程的容错率。注意事项1. 验证码识别的频率控制。同一账号短时间内反复触发验证码识别可能被风控系统标记。打完码成功后尽量维持登录态避免频繁触发。2. 打码平台的响应时间。打码平台2-5秒返回结果这期间你的流程需要等待。不要设太短的超时否则结果还没回来流程就超时了。建议超时设15-20秒。3. 识别失败的重试。OCR和打码平台都有失败率。识别失败后刷新验证码点击换一张重新识别。最多重试3次3次都失败就降级到手动介入。一句话总结验证码能避则避用Cookie/Profile避不了就OCR/打码搞不定就手动介入。不要在验证码识别上投入超过它价值的精力。作者林焱

相关新闻

最新新闻

日新闻

周新闻

月新闻