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

极验验证码破解详细教程

一、极验验证码概述

极验验证码是由http://www.geetest.com/提供的滑动验证码服务,号称利用机器学习和神经网络构建多重防御模型。在国家企业信用信息公示系统(http://www.*****.cn)中,当用户输入企业名称点击查询时,会触发该验证码。

验证流程

  1. 用户拖动滑块到缺口位置
  2. 验证失败效果:返回"fail"
  3. 验证成功效果:返回包含"validate"字段的成功信息

二、抓包分析验证流程

关键数据包分析

  1. 初始请求:SearchItemCaptcha?v=... 返回gt和challenge参数
  2. 中间请求:get.php?gt=...&challenge=... 返回完整验证码信息
  3. 验证请求:ajax.php?gt=...&challenge=... 返回验证结果
  4. 结果请求:crop-query-search-1.html 返回查询结果

关键参数

  • gt:验证码标识,从SearchItemCaptcha响应中获取
  • challenge:挑战码,每次请求动态变化
  • geetest_challenge:验证时使用的挑战码
  • geetest_validate:验证成功后返回的验证值
  • geetest_seccode:geetest_validate + "|jordan"

三、本地验证码服务搭建

搭建步骤

  1. 从https://github.com/GeeTeam/gt-python-sdk下载SDK
  2. 使用HFS软件搭建本地文件服务器
  3. 修改static/index.html中的gt.js来源为本地地址
  4. 修改static_server为本地地址

文件结构

HFS根目录/
├── gt.js
├── geetest.js
└── 其他必要资源文件

四、关键参数分析

gt和challenge获取

  1. 请求SearchItemCaptcha?v=[时间戳]获取初始gt和challenge
  2. 使用获取的gt和challenge请求get.php获取完整验证码信息

ajax.php请求参数

  • callback:"geetest_" + 当前时间戳
  • passtime:拖动滑块时间(0-1000ms随机数)
  • userresponse:根据拖动轨迹生成的响应
  • a:轨迹加密后的参数

五、轨迹(Track)分析

获取轨迹方法

  1. 通过本地搭建的验证码服务
  2. 修改geetest.js源码输出鼠标轨迹信息

轨迹加密过程

  1. 记录鼠标移动的坐标和时间序列
  2. 通过特定算法生成userresponse
  3. 通过加密算法生成参数a

六、验证码图片处理

获取背景图片

  1. 从get.php响应中的"fullbg"字段获取背景图片信息
  2. 解码base64格式的图片数据

缺口距离计算

  1. 分析背景图片和滑块图片的差异
  2. 计算滑块需要移动的像素距离d

七、完整破解流程总结

  1. 获取初始参数

    • 请求SearchItemCaptcha获取gt和challenge
  2. 获取验证码资源

    • 使用gt和challenge请求get.php获取完整验证码信息
    • 解码背景图片和滑块图片
  3. 计算缺口距离

    • 分析图片差异,计算滑块需要移动的距离d
  4. 生成轨迹

    • 模拟人类拖动行为生成移动轨迹
    • 计算轨迹对应的userresponse和a参数
  5. 提交验证

    • 构造ajax.php请求参数
    • 提交验证获取validate值
  6. 获取结果

    • 使用验证成功的参数请求crop-query-search-1.html
    • 解析返回的查询结果

八、关键技术点

  1. 参数逆向

    • 通过抓包分析各参数来源和生成方式
    • 理解参数间的依赖关系
  2. 轨迹模拟

    • 研究人类拖动行为特征
    • 生成符合极验检测模型的轨迹数据
  3. 图片分析

    • 缺口识别算法
    • 距离计算精度控制
  4. 加密分析

    • 研究userresponse和a参数的生成算法
    • 逆向geetest.js中的加密逻辑

九、注意事项

  1. 极验验证码会定期更新防御机制
  2. 轨迹生成需要模拟人类行为的随机性
  3. 验证码图片可能有干扰线和干扰点
  4. 服务器可能会检测请求频率和模式

十、参考文献

  1. 极验验证官方文档
  2. 极验Python SDK源码
  3. 相关逆向工程资料

通过以上步骤和分析,可以系统地理解和实现极验验证码的自动化破解。需要注意的是,本教程仅供学习研究使用,实际应用中应遵守相关法律法规和网站使用协议。

极验验证码破解详细教程 一、极验验证码概述 极验验证码是由http://www.geetest.com/提供的滑动验证码服务,号称利用机器学习和神经网络构建多重防御模型。在国家企业信用信息公示系统(http://www.***** .cn)中,当用户输入企业名称点击查询时,会触发该验证码。 验证流程 用户拖动滑块到缺口位置 验证失败效果:返回"fail" 验证成功效果:返回包含"validate"字段的成功信息 二、抓包分析验证流程 关键数据包分析 初始请求 :SearchItemCaptcha?v=... 返回gt和challenge参数 中间请求 :get.php?gt=...&challenge=... 返回完整验证码信息 验证请求 :ajax.php?gt=...&challenge=... 返回验证结果 结果请求 :crop-query-search-1.html 返回查询结果 关键参数 gt :验证码标识,从SearchItemCaptcha响应中获取 challenge :挑战码,每次请求动态变化 geetest_ challenge :验证时使用的挑战码 geetest_ validate :验证成功后返回的验证值 geetest_ seccode :geetest_ validate + "|jordan" 三、本地验证码服务搭建 搭建步骤 从https://github.com/GeeTeam/gt-python-sdk下载SDK 使用HFS软件搭建本地文件服务器 修改static/index.html中的gt.js来源为本地地址 修改static_ server为本地地址 文件结构 四、关键参数分析 gt和challenge获取 请求SearchItemCaptcha?v=[ 时间戳 ]获取初始gt和challenge 使用获取的gt和challenge请求get.php获取完整验证码信息 ajax.php请求参数 callback :"geetest_ " + 当前时间戳 passtime :拖动滑块时间(0-1000ms随机数) userresponse :根据拖动轨迹生成的响应 a :轨迹加密后的参数 五、轨迹(Track)分析 获取轨迹方法 通过本地搭建的验证码服务 修改geetest.js源码输出鼠标轨迹信息 轨迹加密过程 记录鼠标移动的坐标和时间序列 通过特定算法生成userresponse 通过加密算法生成参数a 六、验证码图片处理 获取背景图片 从get.php响应中的"fullbg"字段获取背景图片信息 解码base64格式的图片数据 缺口距离计算 分析背景图片和滑块图片的差异 计算滑块需要移动的像素距离d 七、完整破解流程总结 获取初始参数 : 请求SearchItemCaptcha获取gt和challenge 获取验证码资源 : 使用gt和challenge请求get.php获取完整验证码信息 解码背景图片和滑块图片 计算缺口距离 : 分析图片差异,计算滑块需要移动的距离d 生成轨迹 : 模拟人类拖动行为生成移动轨迹 计算轨迹对应的userresponse和a参数 提交验证 : 构造ajax.php请求参数 提交验证获取validate值 获取结果 : 使用验证成功的参数请求crop-query-search-1.html 解析返回的查询结果 八、关键技术点 参数逆向 : 通过抓包分析各参数来源和生成方式 理解参数间的依赖关系 轨迹模拟 : 研究人类拖动行为特征 生成符合极验检测模型的轨迹数据 图片分析 : 缺口识别算法 距离计算精度控制 加密分析 : 研究userresponse和a参数的生成算法 逆向geetest.js中的加密逻辑 九、注意事项 极验验证码会定期更新防御机制 轨迹生成需要模拟人类行为的随机性 验证码图片可能有干扰线和干扰点 服务器可能会检测请求频率和模式 十、参考文献 极验验证官方文档 极验Python SDK源码 相关逆向工程资料 通过以上步骤和分析,可以系统地理解和实现极验验证码的自动化破解。需要注意的是,本教程仅供学习研究使用,实际应用中应遵守相关法律法规和网站使用协议。