爬虫之滑动验证破解

破解数美滑块验证码:详细步骤与实现 数美滑块验证码是一种常见的安全验证方式,用于防止自动化脚本和机器人进行恶意操作。本文将详细介绍如何通过抓包获取滑块图片信息、分析加密参数、生成滑动轨迹等步骤,成功破解数美滑块验证码。在滑动滑块的过程中,我们需要分析加密参数。滑动轨迹可以通过模拟人的滑动行为来生成,包括一些随机的抖动和速度变化。首先,进入数美滑块验证码的演示页面,进行抓包操作以获取滑块验证码的前景和背景图片。通过在浏览器中设置断点,我们可以找到参数aw等的生成函数,并确定这些参数的加密方式。最后,结合前面的步骤,实现滑块破解。 阅读详情

滑动验证码

编程思路
  1. 封装一个函数进行登录
    • 创建一个driver对象
    • 找到输入框和密码框,将用户名和密码输入
    • 找到登录按钮
    • 破解滑动验证码(封装函数)
    • 关闭浏览器对象
  2. 封装一个函数,用于破解滑动验证码
    • 计算滑动距离
      • 截取带缺口的图(封装函数)
      • 用js语句去掉缺口
      • 截取不带缺口的图
      • 把去掉的缺口补回来
      • 根据两张图片的缺口处的像素差异,来求出存在差异的第一个像素的x轴坐标,即为滑动距离(封装函数)
    • 模拟人类的动作来滑动
      • 按住滑块按钮
      • 按照距离来拖动(封装函数)
      • 前向移动
      • 松开滑块按钮
  3. 定义一个函数用于截图
    • 截取整个浏览器的图
    • 加载图片
    • 从整个浏览器区域中截取出验证码区域
      • 提取验证码区域的位置(距x轴和距y轴的距离)
      • 提取验证码区域的大小(宽和高)
    • 根据位置和大小来计算验证码区域的截取范围
    • 根据截取范围将验证码区域的图片截取出来
    • 返回截取的图片
  4. 封装一个函数,用于根据两张图片的像素差异来计算滑动距离
    • 获取每一个像素点的rgb值
    • 计算两个图片的rgb差异
    • 判断差异是否大于经验值,大于则返回该像素点的x坐标,即为移动距离
  5. 封装一个函数模拟匀加速运动的轨迹
    • 定义滑动距离拖动的时候多拖出去20(完全模拟人操作)
    • 定义一个中间位置,前面加速,后面减速
    • 定义一个变量用于存放每一段的轨迹
    • 将每一段的位移s加入轨迹中
    • 返回一个字典,存放前向和反向轨迹
代码实现
#导包
from selenium import webdriver
from time import sleep
from PIL import Image
from selenium.webdriver import ActionChains

# 定义一个函数用于截图
def shot_img(driver):
    sleep(2)
    # 截取整个浏览器的图
    driver.save_screenshot("./page.png")
    # 加载图片
    img = Image.open("./page.png")
    # img.show()
    # 从整个浏览器区域中截取出验证码区域
    loc = driver.find_element_by_class_name("geetest_slicebg").location # 提取验证码区域的位置(距x轴和距y轴的距离)
    size = driver.find_element_by_class_name("geetest_slicebg").size # 提取验证码区域的大小(宽和高)
    # 根据loc和size来计算验证码区域的截取范围
    top = loc["y"]
    bottom = loc["y"] + size["height"]
    left = loc["x"]
    right = loc["x"] + size["width"]
    # 根据截取范围将验证码区域的图片截取出来(后面的系数根据自己电脑配置自行调节)
    code_img = img.crop((left*2,top/2,right*2,bottom*1.2))
    # code_img.show()
    return code_img

# 封装一个函数,用于根据两张图片的像素差异来计算滑动距离
def get_distance(img1,img2):
    for i in range(50,img1.size[0]):
        for j in range(0,img1.size[1]):
            # 获取每一个像素点的rgb值
            rgb1 = img1.load()[i,j]
            rgb2 = img2.load()[i,j]
            # 计算两个图片的rgb差异
            r = abs(rgb1[0] - rgb2[0])
            g = abs(rgb1[1] - rgb2[1])
            b = abs(rgb1[2] - rgb2[2])
            # 判断差异
            if r>60 and g>60 and b>60:
                return i/2 - 6


# 封装一个函数,用于提供模拟匀加速运动的轨迹
def tracks(distance):
    # 拖动的时候多拖出去20
    distance += 20
    v = 0
    t = 0.2
    # 定义一个中间位置,以前匀加速,以后匀减速
    mid = distance*3/5
    # 定义一个变量用于记录当前位置
    current = 0
    # 定义一个变量用于存放每一段的轨迹
    farwords = []
    while current < distance:
        if current < mid:
            a = 2
        else:
            a = -3
        s = v*t + 1/2*a*t**2
        v = a*t + v
        current += s
        # 将每一段的位移s加入轨迹中
        farwords.append(round(s))
    # 返回一个字典,里面存放前向和反向轨迹
    return {"farwords":farwords,"backs":[-3,-3,-3,-2,-2,2,-2,-2,-3,-1,-1]}



# 封装一个函数,用于破解滑动验证码
def crack_code(driver):
    # 1、计算滑动距离
    # 1)截取带缺口的图
    img1 = shot_img(driver)
    # 2)去掉缺口
    # 用js语句来去掉缺口
    js = "document.querySelector('.geetest_canvas_slice').style.zIndex=10;document.querySelector('.geetest_canvas_slice').style.display='block';document.querySelector('.geetest_canvas_fullbg').style.display='block';"
    driver.execute_script(js)

    # 3)截取不带缺口的图
    img2 = shot_img(driver)

    # 4)把去掉的缺口补回来
    js = "document.querySelector('.geetest_canvas_slice').style.zIndex=10;document.querySelector('.geetest_canvas_slice').style.display='block';document.querySelector('.geetest_canvas_fullbg').style.display='none';"
    driver.execute_script(js)

    # 5) 根据两张图片的缺口处的像素差异,来求出存在差异的第一个像素的x轴坐标,即为滑动距离
    distance = get_distance(img1,img2)
    print(distance)
    # 2、模拟人类的动作来滑动
    btn = driver.find_element_by_class_name("geetest_slider_button")
    # 1)按住滑块按钮
    ActionChains(driver).click_and_hold(btn).perform()
    sleep(0.5)
    # 2)按照距离来拖动
    # ActionChains(driver).move_by_offset(xoffset=distance,yoffset=0).perform() # 拖动的时候要尽量慢一些更像人类动作
    # 获取轨迹
    track_dict = tracks(distance)
    # 前向移动
    for track in track_dict["farwords"]:
        ActionChains(driver).move_by_offset(xoffset=track, yoffset=0).perform()
    sleep(0.5)
    # 反向移动
    for track in track_dict["backs"]:
        ActionChains(driver).move_by_offset(xoffset=track, yoffset=0).perform()
    sleep(0.5)
    # 3)松开滑块按钮
    ActionChains(driver).release().perform()




# 封装一个函数用于登录
def login_blogs(url,name,password):
    # 创建一个driver对象
    driver = webdriver.Chrome()
    try:
        driver.get(url)
        sleep(1)
        # 找到输入框和密码框,将用户名和密码输入
        driver.find_element_by_id("LoginName").send_keys(name)
        driver.find_element_by_id("Password").send_keys(password)
        # 找到登录按钮
        driver.find_element_by_id("submitBtn").click()
        sleep(1)
        # 破解滑动验证码
        crack_code(driver)
        sleep(5)
    finally:
        driver.close()


if __name__ == '__main__':
    url = "https://account.cnblogs.com/signin"
    login_blogs(url,"qwer","1234")
爬虫技术中的滑块验证问题及解决方案 滑块验证作为一种有效的防止机器人程序自动化攻击的技术手段,给爬虫技术带来了不小的挑战。然而,随着网络安全性的提高,越来越多的网站开始采用滑块验证技术来防止机器人程序的自动化访问。这种方法可以绕过滑块验证的限制,但需要注意的是,由于Selenium操作的是真实的浏览器,因此性能上可能不如传统的爬虫方法。然而,由于滑动验证码的复杂性和变化性,识别技术的准确性和稳定性仍然是一个挑战。用户完成滑块验证后,爬虫再继续执行后续任务。传统的爬虫方法无法直接处理滑块验证,因为滑块验证通常需要用户进行实时的、复杂的操作。 阅读详情

相关推荐

爬虫项目:破解极验滑动验证码

在这篇文章中:一 介绍二 实现一 介绍    一些网站会在正常的账号密码认证之外加一些验证码,以此来明确地区分人/机行为,从一定程度上达到反爬的效果,对于简单的校验码Tesserocr就可以搞定,如下    但一些网站加入了滑动验证码,最典型的要属于极验滑动认证了,极验官网:http://www.geetest.com/,下图是极验的登录界面    现在极验验证码已经更新到了 3.0 版本,截至 ...

qq_42330464的博客 2915

java爬虫破解滑块验证码

使用技术:java+Selenium 废话:有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。

学习学习学习 8515

Python爬虫 | 滑动验证码破解

极验验证码:需要手动拼合滑块来完成的验证,相对图形验证码识别难度上升了几个等级。下面用程序识别并通过极验验证码的验证,其中有分析识别思路、识别缺口位置、生成滑块拖动、模拟实现滑块拼合通过验证等步骤。需要用到Chrome 浏览器,并配置 ChromeDriver ,要用到的 Python 库是 Selenium。 1、 对极验验证码了解   极验验证码官网:http://www.geetest.com/。一个专注提供验证安全的系统,主要验证方式是拖动滑块拼命图像。若图像完全拼合,则验证成功,即表单提交,否则

易云云博客 3736

如何使用Java破解滑动验证码

使用Java相关的技术实现破解滑动验证码,selenium+opencv。Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API和工具,可用于模拟用户在Web应用程序中的交互行为,例如点击按钮、填写表单、导航到不同的页面等操作。

Keep__Me的博客 2825

超详细的python爬虫破解反爬技术,手把手教你破解滑动验证码

滑动验证码的识别介绍 本节目标: 用程序识别极验滑动验证码的验证,包括分析识别思路、识别缺口位置、生成滑块拖动路径、模拟实现滑块拼合通过验证等步骤。准备工作: 本次案例我们使用Python库是Selenium,浏览器为Chrome。请确保已安装Selenium库和ChromeDriver浏览器驱动。 了解极验滑动验证码: 极验滑动验证码官网为:http://www.ge...

qq_46614154的博客 6191

用Python爬虫破解滑动验证码

我们可以借用opencv来解决这个问题,主要步骤: opencv 是什么? OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法,可用于开发实时的图像处理、计算机视觉以及模式识别程序。 直接安装 首先将图片进行高斯模糊处理,高斯模糊的主要作用是减少图像的噪声,用于预处理阶段。 处理后的效果 接着用Canny边缘检测到得到一个包含“窄边界”的二值图像。所谓二值图像...

weixin_54556126的博客 1540

php爬虫js解析,爬虫分析之 JS逆向某验滑动加密(1)

今天给大家来分析并还原某验的 JS 加密,做过爬虫的应该都知道这个验证码,如果你还没遇到以后你会碰到的相信我话不多说,时间宝贵,进入正题!抓包进入官网,点击选择今天的主题滑动验证,其他验证类型的加密大同小异,只要你掌握了下面的方法!点击按钮抓包,随意拖动一下,请求数据包如下可以看到一堆请求参数,其实你要做的就是实现 w 的加密点击进去,就能看到加密的 JS 文件,为便于分析将其保存到本地。AST ...

weixin_32795125的博客 220

猫眼爬虫三-终极篇:破解滑动验证,动态字体加密

前面两节我们对猫眼网站进行了爬取,中间,我们会遇到各种反爬虫,包括滑动验证和字体加密等等,今天,我们就对这些反爬虫进行一一破解,实现猫眼网站的全信息爬取! 1、滑动验证:滑动验证类似于极验证(滑块验证,电脑的B站登陆要滑动的哪个),但是原理不一样,目前来说,12306的相关抢票的脚本已经实现了自动加载滑块滑动,但大多数情况还得手动,在这里也是。 破解流程: 1、先尝试着获取数据,如果遇到爬取链接与...

qq_42105477的博客 7337

网络爬虫-破解极验三代滑动验证码

什么是“极验”? 如果你是从事爬虫相关工作的,那么一定对这两个字不会陌生的。 极验是首家「行为式验证」安全技术服务提供商,并以提供验证码服务而闻名。我们日常会登录一些网站,有的网站登录前需要校验验证码,而这个验证码服务很可能就是极验提供的。 我们直接进入正题 如图所示 这个在登陆面前的拦路虎 便是大名鼎鼎的极验滑块验证码了 看到这里 有点基础的小伙伴 应该马上能想到用selenium来模拟人为拖动滑块来解决,这确实是一个不错的方法,在需求量较小的情况下,不失为一个优先的选择,但它的缺点也十分明显: 一是

qq_39802740的博客 5002

Python爬虫会遇到的难题,如何破解滑动验证码

做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈。 今天分享个如何简单处理滑动图片的验证码的案例。 私信小编01即可获取大量Python学习资源 类似这种拖动滑块移动到图片中缺口位置与之重合的登录验证在很多网站或者APP都比较常见,因为它对真实用户体验友好,容易识别。同时也能拦截掉大部分初级爬虫。 作为一只python爬虫,如何正确地自动完成这个验证过程呢? 先来分析下,核心问题其实是要怎么样找到目标缺口的位置,一旦知

管彤python每日分享python技巧 790

从零到一:在K210上实现YOLO模型在线训练与部署全流程

本文详细介绍了在K210芯片上实现YOLO模型在线训练与部署的全流程,涵盖数据采集、模型优化、量化转换及内存管理等关键环节。通过实战案例和代码示例,帮助开发者高效利用K210的超低功耗特性与YOLO模型的实时检测能力,适用于边缘计算和物联网应用场景。

weixin_29094539的博客 350

爬虫进阶:验证码突破--7、滑动验证码破解

测试网址是网易cc,只是研究爬虫自动化 1、Iframe窗口切换 import time, re from selenium import webdriver chrome_option = webdriver.ChromeOptions() driver = webdriver.Chrome(chrome_options=chrome_option) driver.set_window_size...

huoyingchong64的博客 1631

Unity——Scroll View 滑动居中、居中的放大、其他的缩小(支持横竖Scroll View)

一、效果 二、上代码,两种方式。 (第一种是在Update中用插值完成的,如果不想再项目中看到Update,下面的另一种改了一段用DoTween实现的,需要导入一下DoTween) using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Unit...

SiReSo 7659

selenium破解滑动验证实现自动登录爬虫

selenium破解滑动验证实现自动登录爬虫概述:一、selenium的滑动验证码的破解 概述: 下文有两个部分: 1、selenium的滑动验证码的破解; 2、基于selenium的网络爬虫(以B站为例) 一、selenium的滑动验证码的破解 1、思路分析 a、首先进入B站的登录界面,当输入账号密码,点击登录后,会弹出滑动验证码,如: b、查看网页源码,发现它生成了两张图片,一张完整的的图片和...

WolfHound 1083

Linux CentOS7文件系统(/dev/var)的容量扩充

原因是之前安装docker后,再想安装Nessus,系统说home、var文件系统的内存都不够。

JHoanna的博客 3226

基于FPGA的 SelectIO IP核 的仿真验证-----( LVDS差分高速传输)

SelectIO IP核 的仿真验证

qq_43618170的博客 1万+

15.网络爬虫—selenium验证码破解

超级鹰的图文识别功能可以识别包含文字和图片的验证码,比如滑动拼图验证码。此外,超级鹰还提供了多种识别方式,如手动识别、自动识别、多人协作等,可以满足不同的识别需求。它采用了最先进的图像识别技术,可以快速准确地识别各种形式的图像验证码,如数字、字母、中文、滑动拼图等。🎯2.通过行为链,输入账号密码,因为我没有注册,所以随便输入的,不过影响不大,我们需要的是输入正确的验证码。

Oona_01的博客 306

STM32输入捕获功能,同时捕获8路波形。

STM32输入捕获功能,使用TIM2和TIM3同时捕获8路波形。 工作上的一个需求,要采集两组控制步进电机的信号。就是采集8个通道的方波,测量频率和计脉冲个数。看起来简简单单的东西,磕磕碰碰搞了两天,走了一些弯路,这里写出来记录一下。顺便理解一下输入捕获个多种用法。 1. 硬件设计 首先看一下用到那些IO口。在STM32手册里找这样TIMx_CHx的就是输入捕获的口了。 这里用了TIM2的4个口和TIM3的4个口。 定义 端口 TIM2_CH1 PA0 TIM2_CH2 PA1 TI

qq_36353009的博客 5123

作为一只Python爬虫:如何破解滑动验证码

做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈。 今天分享个如何简单处理滑动图片的验证码的案例。 类似这种拖动滑块移动到图片中缺口位置与之重合的登录验证在很多网站或者APP都比较常见,因为它对真实用户体验友好,容易识别。同时也能拦截掉大部分初级爬虫。 作为一只python爬虫,如何正确地自动完成这个验证过程呢? 先来分析下,核心问题其实是要怎么样找到目标缺口的位置,一旦知道了位置,我们就可以借用sele.

weixin_54556126的博客 2万+

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 404

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

王老师青少年编程 1718

python爬虫——破解滑动验证码

滑动验证码的破解是验证码类中唯一一个不需要涉及深度学习的一类反爬措施。它完全可以依靠python的一些包来进行破解。下面例举下要用的模块。 pillow:处理图片 request:获取图片 selenium:模拟浏览器的行为 random:取随机数 io:模拟文件存储 re:正则匹配 time:时间模块,用到时间等待功能 这里以虎嗅网为例,虎嗅网用的滑动验证码是由极验提供的。下面...

小白一直白 1万+

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2498

爬虫滑动,点选文字图片验证码破解

携程破解滑动和点选文字图片验证码 from selenium import webdriver from selenium.webdriver import ActionChains import time import base64 from PIL import Image from aip import AipOcr """ https://www.jianshu.com/p/d59b4...

酒逢知己千杯少,欢迎驾临 3468

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python如何用爬虫破解滑动验证码?这五步简单易用

在使用python爬虫抓取数据的时候经常会遇到网站为了防止机器人登录而设置了验证,除了最基本的字符验证之外还有滑块验证、图片验证、顺序验证等等验证方式。那我们今天就来讲一下python如何用爬虫破解滑动验证码,一起来看看吧。

Python栈 5560

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 爬虫基础
下一篇: 进程、线程、协程、同步与异步
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值