本系统解决网页爬虫中最棘手的验证码拦截问题。针对网易易盾(NetEase Yidun)
滑块验证码——国内强度最高的反爬系统之一——实现全自动识别与破解。
核心流程:自动检测滑块弹窗 → 下载背景图和拼图块 → OpenCV 计算机视觉定位
缺口位置 → 生成人类行为模拟轨迹 → Playwright 模拟鼠标拖拽 → 自动判定
成功/失败并重试。成功率达 90%+,已在真实 B2B 医药电商平台(药师帮)
的批量商品数据采集任务中实际部署。
- 使用 Playwright 启动 Chromium 浏览器,采用持久化用户数据目录
- 通过 DOM 选择器实时监控滑块验证码弹窗的 .yidun_slider 元素出现
- 调用页面 JS 提取背景图(.yidun_bg-img)和拼图块(.yidun_jigsaw)的 URL 及 CSS 尺寸
- 下载两张图片后,用 NumPy 转换为浮点数组进行像素级分析
- 核心算法:计算相邻列间 RGB 最大差异的纵向一致性评分(col_score)
- 识别评分峰值作为候选缺口边界,进行双峰配对(缺口左/右边缘)
- 使用 Canny 边缘检测 + 拼图块 alpha 通道轮廓,进行模板匹配验证
- 按 scale = bgCSSW / bgNW 换算自然像素到页面像素的拖拽距离
- 轨迹生成模拟人类操作:分加速段(0-40%)、匀速段(40-80%)、减速段(80-100%)
加入随机抖动(±1.5px Y轴偏移)和微调回退(模拟手抖)
- 拖拽完成后等待 1.5s,检查页面 URL 跳转、DOM 文字(失败/重试/验证通过)
弹窗消失等多维度状态判定结果,失败自动重试(可配最大次数)
- 封装为 YidunSolver 类,支持 import 导入到任意 Playwright 爬虫中复用
- slider_detect.py 作为诊断工具,支持 iframe 穿透、全页 DOM 关键字搜索、
属性关键词搜索,快速定位任意网站的滑块验证码元素结构