回答
实现滑动验证码的自动化解决方案
要实现有图案有背景缺口的滑动验证码自动化,关键在于准确识别缺口位置并模拟人类滑动行为。以下是完整的解决方案:
步骤解析
- 获取屏幕截图权限并截屏
- 识别缺口位置
- 计算滑动距离
- 模拟人类滑动行为提高通过率
代码实现
// 文档地址 https://docs.hamibot.com/
// 请求屏幕截图权限
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
sleep(1000);
// 截取屏幕
var img = captureScreen();
// 识别缺口位置(需要根据实际验证码调整颜色参数)
// 假设缺口主色为#E4E4E4,周围有特定颜色点阵
var gapPosition = images.findMultiColors(
img,
'#E4E4E4',
[
[5, 5, '#E4E4E4'],
[10, 10, '#E4E4E4'],
[15, 15, '#E4E4E4']
],
{
region: [0, 0, device.width, device.height],
threshold: 4
}
);
// 识别滑块位置(需要根据实际情况调整)
var sliderPosition = images.findMultiColors(
img,
'#5C9DFF',
[
[5, 5, '#FFFFFF'],
[10, 10, '#FFFFFF']
],
{
region: [0, 0, device.width, device.height],
threshold: 4
}
);
if (gapPosition && sliderPosition) {
// 计算需要滑动的距离(注意:实际距离可能需要调整系数)
var swipeDistance = gapPosition.x - sliderPosition.x - 10;
// 模拟人类行为提高通过率
// 1. 添加随机前置延迟
sleep(800 + Math.random() * 700);
// 2. 模拟不规则滑动轨迹(先快后慢)
var totalDuration = 1200 + Math.random() * 300;
// 3. 添加轨迹偏移模拟手指抖动
var offsetX = (Math.random() - 0.5) * 5;
var offsetY = (Math.random() - 0.5) * 3;
// 4. 分段滑动模拟人类速度变化
var startX = sliderPosition.x + offsetX;
var startY = sliderPosition.y + offsetY + 20;
var endX = sliderPosition.x + swipeDistance + offsetX;
var endY = startY;
// 模拟加速度变化(先加速后减速)
var controlX = startX + swipeDistance * 0.7;
var controlY = startY - 30;
// 使用贝塞尔曲线模拟自然滑动轨迹
gestures(
[500, [startX, startY]],
[totalDuration, [controlX, controlY], [endX, endY]]
);
toastLog('滑动成功! 距离: ' + swipeDistance + 'px, 耗时: ' + totalDuration + 'ms');
} else {
toastLog('未识别到缺口或滑块位置,请检查验证码特征');
if (!gapPosition) toastLog('缺口未找到');
if (!sliderPosition) toastLog('滑块未找到');
}
hamibot.exit();
提高通过率的关键技巧
-
精准识别缺口:
- 使用多点找色代替单点找色,提高识别准确率
- 调整
threshold参数(默认4)适应不同背景 - 限定搜索区域
region减少误判
-
模拟人类行为:
- 添加随机前置延迟(800-1500ms)
- 使用贝塞尔曲线
gestures代替直线滑动 - 模拟滑动过程中的速度变化(先快后慢)
- 添加轻微的轨迹偏移(模拟手指不稳定性)
-
参数调整建议:
- 对于不同网站的验证码,需要调整颜色值和偏移量
- 测试不同
threshold值(2-6之间)找到最佳识别率 - 根据实际滑动距离调整
totalDuration(距离越长,时间应越长)
-
高级技巧:
- 多次尝试机制:如果第一次失败,稍等后重新尝试
- 动态调整滑动距离:根据识别置信度微调最终位置
- 添加随机点击验证元素,模拟人类操作流程
注意:实际使用时需要根据目标网站的具体验证码特征调整颜色值、偏移量和阈值参数。建议先手动截图分析验证码的视觉特征,再确定合适的识别参数。
ℹ️ 本回答由 AI 生成,内容仅供参考