YOLOV8破解滑块验证码的技术解析与效果展示

  • 1. 破解滑块验证码的重要点
  • 2. 破解滑块验证码的难处 
  • 3. 破解流程
  • 4. 效果展示
  • 5. 代码获取

滑块验证码作为一种常见的人机验证方式,旨在防止机器人或恶意程序的自动化攻击。然而,随着计算机视觉和深度学习技术的不断发展,破解滑块验证码的技术也日益成熟。本文将详细说明破解滑块验证码的重要点、难处,并介绍一种基于yolov8训练的模型的破解过程,并展示其效果。

一、破解滑块验证码的重要点:  

1.1 图像分割:滑块验证码通常由背景图和滑块图组成,破解的第一步是提取各种滑块图像,本人收集了5种

 

1.2 滑块位置定位:确定滑块在背景图中的位置,以便后续的滑动模拟

1.3 滑块轨迹模拟:通过模拟用户的滑动轨迹,使得破解过程更加真实可信

二、 破解滑块验证码的难处 

2.1 多样性:滑块验证码的设计者会采用不同的背景图、滑块图以及滑块形状、大小等参数,增加了破解的难度。

2.2 干扰项:为了防止破解,滑块验证码通常会添加一些干扰项,如噪点、干扰线等,使得图像更加复杂,增加了破解的难度。

2.3 实时性:滑块验证码通常要求用户在一定时间内完成验证,破解过程需要在规定时间内完成,增加了破解的难度。

三、破解过程:

为了破解滑块验证码,我们采用了yolov8来训练模型,具体步骤如下:

3.1 数据预处理:艰苦的收集了14000张各色的图片的数据集。数据集进行预处理,包括图像增强、滑块图像分割、滑块位置标注等。 

3.2 模型训练:使用yolov8模型对预处理后的数据集进行训练,以学习滑块图像的特征。

yolo detect train data=data.yaml model=best.pt epochs=1000 patience=100 batch=660 device=0 imgsz=320

训练效果99%点多,奈斯!

3.3 滑块位置定位:使用训练好的模型对滑块验证码进行图像分割和滑块位置定位,得到滑块的位置信息。

def get_element_slide_distance(self, slider_ele, background_ele, correct=0):
    """
    根据传入滑块,和背景的节点,计算滑块的距离

    该方法只能计算 滑块和背景图都是一张完整图片的场景,
    如果是通过多张小图拼接起来的背景图,该方法不适用,后续会补充一个专门针对处理该场景的方法
    :param slider_ele: 滑块图片的节点
    :type slider_ele: WebElement
    :param background_ele: 背景图的节点
    :type background_ele:WebElement
    :param correct:滑块缺口截图的修正值,默认为0,调试截图是否正确的情况下才会用
    :type: int
    :return: 背景图缺口位置的X轴坐标位置(缺口图片左边界位置)
    """
    background_url = background_ele.get_attribute("src")
    background = "./images/verifycode.jpg"
    self.onload_save_img(background_url, background)

    # 获取父元素的坐标
    parent_location = background_ele.location

    # 获取子元素的坐标
    child_location = slider_ele.location

    # 计算子元素在父元素中的相对坐标
    relative_x = child_location['x'] - parent_location['x']
    relative_y = child_location['y'] - parent_location['y']

    result = self.yolo_det(background)
    # if result is None or len(result) == 0:
    # result = self.paddle_det.predict(background_01, threshold=0.8)
    # result = result['boxes']
    # 再使用tensor.numpy()进行转化
    result = result[0].boxes.data.cpu().numpy()
    distance = int(result[0][0])
    print("当前滑块的信息:{},{}".format(result, distance))
    os.remove(background)
    return distance

3.4 滑块轨迹模拟:根据滑块的位置信息,模拟用户的滑动轨迹,以完成滑块验证码的破解。

    def slide_verification(self, driver, slide_element, distance):
        """
        :param driver: driver对象
        :type driver:webdriver.Chrome
        :param slide_element: 滑块的元组
        :type slider_ele: WebElement
        :param distance:  滑动的距离
        :type: int
        :return:
        """
        start_url = driver.title
        print("需要滑动的距离为:", distance)
        locus = self.get_slide_locus(distance)
        print("生成的滑动轨迹为:{},轨迹的距离之和为{}".format(locus, distance))
        ActionChains(driver).click_and_hold(slide_element).perform()
        time.sleep(0.5)
        for loc in locus:
            time.sleep(0.01)
            ActionChains(driver).move_by_offset(loc, random.randint(-5, 5)).perform()
            ActionChains(driver).context_click(slide_element)
        ActionChains(driver).release(on_element=slide_element).perform()
        time.sleep(2)
        end_url = driver.title
        print(start_url + "====" + end_url)
        # if start_url == end_url:
        #     return -1
        #     print("第{}次验证失败,开启重试".format(6 - self.count))
        #     self.count -= 1
        #     self.slide_verification(driver, slide_element, distance)
        return 0

 四、效果展示

12月12日

五、代码获取https://item.taobao.com/item.htm?id=764152812060 
  • 29
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
YOLOv8是一个**用于目标检测的深度学习模型**,它可以通过训练来识别图像中的特定对象。 在介绍YOLOv8训练滑块之前,需要了解以下几个关键点: 1. **环境准备**:在进行模型训练之前,需要搭建适合YOLOv8的训练环境,这通常包括安装必要的软件包、依赖库以及确保硬件资源(如GPU)的可用性。 2. **数据集准备**:为了训练模型识别滑块,需要准备一个包含滑块图片的数据集。这些图片应该包含不同类型和样式的滑块,以便模型能够学习到多种变化。 3. **模型训练**:使用准备好的数据集对YOLOv8模型进行训练。这个过程可能需要调整一些参数,如学习率、批处理大小等,以优化训练效果。 4. **结果验证与部署**:训练完成后,需要验证模型的效果,通常是通过一组未参与训练的测试图片来进行。一旦模型表现良好,就可以将其部署到实际应用中去识别和处理滑块验证码。 5. **滑块特征获取**:在实际应用中,可能需要获取滑块的RGB值或其他特征,以便模型能够准确地定位和识别滑块。这可能涉及到图像处理技术,以确保滑块能够被正确分割出来。 6. **破解过程**:对于滑块验证码破解,通常会涉及到多个步骤,包括识别滑块的位置、判断缺口的方向以及模拟滑动动作。YOLOv8在这里的作用主要是准确识别滑块的特征和位置。 7. **持续优化**:由于滑块验证码的设计可能会不断更新和变化,因此需要不断地收集新的数据并更新模型,以保持破解效果。 8. **法律和伦理考量**:需要注意的是,破解滑块验证码可能涉及到法律和伦理问题。在实际应用中,应确保遵守相关法律法规,并尊重网站的使用条款。 综上所述,YOLOv8训练滑块是一个涉及多个步骤的过程,包括环境准备、数据集准备、模型训练、结果验证与部署等。通过这些步骤,可以使YOLOv8模型学会识别和处理滑块验证码,但在此过程中应注意遵守相关的法律法规。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京比特科技工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值