极验验证码破解—超详细教程(三)
字数 1349 2025-08-29 08:31:41

极验验证码破解超详细教程(三)

一、网站http://www.gsxt.gov.cn滑动验证码概述

极验验证码是一种基于深度学习技术的人机验证系统,通过滑动拼图的方式验证用户是否为真实人类。本教程将详细讲解如何破解该验证码系统。

二、极验验证码破解-抓包分析

通过抓包分析发现,验证码相关信息主要通过get.php接口获取,其中包含"fullbg"参数,表明背景图片信息是通过该接口传输的。

三、极验验证码破解-搭建本地验证码服务

为了便于分析和测试,需要搭建本地验证码服务环境。

四、极验验证码破解-分析geetest.js,得到所需参数

通过分析geetest.js文件,可以获取验证码所需的各种参数,这些参数是后续破解过程的基础。

五、极验验证码破解-Track的获取

Track(拖动轨迹)的生成是破解的关键点之一,有两种主要方法:

1. 随机函数生成Track(不推荐)

  • 根据缺口距离d,使用随机函数随机采样生成
  • 控制总拖动时间t(一般小于3秒)
  • 每小段时间(如10ms)移动一小段随机距离
  • 最终在时刻t正好移动到d位置
  • 缺点:难以模拟人类先加速后减速的特点,容易被识别为机器行为

2. 手工存储备用Track(推荐)

  • 多次刷新验证码页面,获取不同缺口位置的验证码
  • 手动拖动至缺口处,保存Console中的Track
  • 利用缺口位置相近的Track互相替代(如d=120的Track可用于d=119和d=121)
  • 将Track按个位数分类存储在10个文件中
  • 最终整合为字典格式:{k1:v1},其中k1为缺口位置,v1为Track字符串

六、极验验证码破解-获取背景图片及缺口距离d的计算

1. 图片来源分析

  • 背景图片通过get.php接口获取
  • 返回的图片是局部重合产生的乱码图片
  • 实际展示的图片是从原始乱码图片中多次截取小段合成的

2. 图片合成原理

  • 通过background-position参数确定截取位置
  • 例如background-position: -157px,-58px表示从源图片的(157,58)位置开始截取10×58像素的区域

3. 缺口距离计算

通过比较两张图片的像素值,可以得到缺口的位置,缺口左上角横坐标即为d值。实现代码如下:

def get_dist(image1, image2):
    # 合并图片使用
    location_list = cPickle.load(open('location_list.pkl'))
    
    jpgfile1 = cStringIO.StringIO(urllib2.urlopen(image1).read())
    new_image1 = get_merge_image(jpgfile1, location_list)
    new_image1.save('image1.jpg')
    
    jpgfile2 = cStringIO.StringIO(urllib2.urlopen(image2).read())
    new_image2 = get_merge_image(jpgfile2, location_list)
    new_image2.save('image2.jpg')
    
    for i in range(260):
        for j in range(116):
            if not is_similar(new_image1, new_image2, i, j):
                return i  # 返回缺口横坐标

七、极验验证码破解-总结

  1. 本教程介绍了破解极验验证码的关键技术点,包括Track获取和缺口距离计算
  2. 采用历史轨迹替代生成轨迹的方法,成功率接近100%,且复杂度不高
  3. 历史轨迹可单独存储并定期更新,防止被封
  4. 完整代码已开源在GitHub:https://github.com/FanhuaandLuomu/geetest_break

参考文献

  1. http://blog.csdn.net/paololiu/article/details/52514504
  2. https://zhuanlan.zhihu.com/p/22866110?refer=windev
  3. https://zhuanlan.zhihu.com/p/22404294

运行截图

[此处应添加相关运行截图]

注意事项

  1. 本教程仅供学习研究使用,请勿用于非法用途
  2. 验证码系统可能随时间更新,部分方法可能需要调整
  3. 建议定期更新Track列表以提高成功率
极验验证码破解超详细教程(三) 一、网站http://www.gsxt.gov.cn滑动验证码概述 极验验证码是一种基于深度学习技术的人机验证系统,通过滑动拼图的方式验证用户是否为真实人类。本教程将详细讲解如何破解该验证码系统。 二、极验验证码破解-抓包分析 通过抓包分析发现,验证码相关信息主要通过 get.php 接口获取,其中包含"fullbg"参数,表明背景图片信息是通过该接口传输的。 三、极验验证码破解-搭建本地验证码服务 为了便于分析和测试,需要搭建本地验证码服务环境。 四、极验验证码破解-分析geetest.js,得到所需参数 通过分析 geetest.js 文件,可以获取验证码所需的各种参数,这些参数是后续破解过程的基础。 五、极验验证码破解-Track的获取 Track(拖动轨迹)的生成是破解的关键点之一,有两种主要方法: 1. 随机函数生成Track(不推荐) 根据缺口距离d,使用随机函数随机采样生成 控制总拖动时间t(一般小于3秒) 每小段时间(如10ms)移动一小段随机距离 最终在时刻t正好移动到d位置 缺点:难以模拟人类先加速后减速的特点,容易被识别为机器行为 2. 手工存储备用Track(推荐) 多次刷新验证码页面,获取不同缺口位置的验证码 手动拖动至缺口处,保存Console中的Track 利用缺口位置相近的Track互相替代(如d=120的Track可用于d=119和d=121) 将Track按个位数分类存储在10个文件中 最终整合为字典格式:{k1:v1},其中k1为缺口位置,v1为Track字符串 六、极验验证码破解-获取背景图片及缺口距离d的计算 1. 图片来源分析 背景图片通过 get.php 接口获取 返回的图片是局部重合产生的乱码图片 实际展示的图片是从原始乱码图片中多次截取小段合成的 2. 图片合成原理 通过 background-position 参数确定截取位置 例如 background-position: -157px,-58px 表示从源图片的(157,58)位置开始截取10×58像素的区域 3. 缺口距离计算 通过比较两张图片的像素值,可以得到缺口的位置,缺口左上角横坐标即为d值。实现代码如下: 七、极验验证码破解-总结 本教程介绍了破解极验验证码的关键技术点,包括Track获取和缺口距离计算 采用历史轨迹替代生成轨迹的方法,成功率接近100%,且复杂度不高 历史轨迹可单独存储并定期更新,防止被封 完整代码已开源在GitHub:https://github.com/FanhuaandLuomu/geetest_ break 参考文献 http://blog.csdn.net/paololiu/article/details/52514504 https://zhuanlan.zhihu.com/p/22866110?refer=windev https://zhuanlan.zhihu.com/p/22404294 运行截图 [ 此处应添加相关运行截图 ] 注意事项 本教程仅供学习研究使用,请勿用于非法用途 验证码系统可能随时间更新,部分方法可能需要调整 建议定期更新Track列表以提高成功率