news 2026/4/17 2:11:41

【验证码逆向专栏】某团验证码逆向分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【验证码逆向专栏】某团验证码逆向分析

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

前言

近期,有粉丝私信,说工作中碰到了某团的验证码,他弄了一段时间,还是没能很好的解决掉,希望 K 哥能帮忙看下,出篇文章。对于大伙的疑难站点,我这都会记录到文档中,抽空逐一解决,本期就对该验证码展开逆向分析,仅供学习交流:

逆向目标

  • 目标:某团人机验证码
  • 网址:aHR0cHM6Ly93d3cuZGlhbnBpbmcuY29t

抓包分析

使用无痕浏览器,直接打开网址,或者百度搜索某众点评,点进去,都会触发,没有就多试几次,实在不行的话,私信我,发更容易触发的站点。

触发风控,重定向到人机验证码页面后,F12 打开开发者人员工具,刷新网页,抓包分析。

page_data接口会返回后续加密所需的一些参数,以及触发的验证码类型(type),例如 163 滑动拼图、71 滑条验证、130 图标点选等等。请求参数中的requestCode参数,即验证码标识,是目标链接,触发风控后响应返回的,可以考虑用正则等方法提取:

上例为拼图滑块验证的响应内容,滑条和图标点选,会多出两个重要参数,sessionsign,若有这两个参数,会走不同的加密算法逻辑:

info接口响应返回 base64 编码的背景、滑块图片,请求参数中有个加密参数_token,后文会进行逆向分析:

verify为校验接口,请求参数中包含加密参数behavior_token以及一些环境参数等:

该接口请求头中的Authencation参数也加密了一些环境,同样需要处理,异常会导致校验失败:

校验成功:

  • {“status”:1,“data”:{“response_code”:“f03d1664c5d247988214f5f248eca964”},“error”:null}

校验失败:

  • {‘status’: 0, ‘data’: None, ‘error’: {‘code’: 121056, ‘message’: ‘请求异常,拒绝操作’}}
  • {“status”:0,“data”:null,“error”:{“code”:121079,“message”:“验证失败,请重新操作”}}

本文以拼图滑块验证码为例,分析各个加密参数的生成逻辑。

逆向分析

_token

首先,我们来看看info接口出现的第一个加密参数_token。从该接口的第一个堆栈处下断,刷新验证码图片即会断住,向上跟栈到下图处,这里是最后一个出现_token参数值的位置。可以看到,js 代码经过了混淆,使用 ast 技术解混淆或者硬跟都可以:

接着,跟踪一下 LD 参数,看其是如何生成的。这块是个switch-case语句,图例处是执行到最后一步了,我们从前往后,看到 case 0 代码块,发现LD = I2(Li, LF, LC, Lo),鼠标放到 LF 上,发现此时_token参数已经生成了,那么下一步,就在function I4下的 return 处下断点,重新刷新,分析流程:

断住后,LF 中已存在相关参数值,向上跟栈到下图处,LE 即_token参数的值,其生成算法就在上面几行:

LE = LC["cypher"](Lr, Ls["reload"]())

Lr 为LC["config"]["isDegrade"]LC["config"]就是从page_data接口获取到的一些响应参数,此处的 isDegrade 为 undefined。Ls["reload"]()是一些环境、canvas 参数、自动化检测等加密、编码生成,部分参数经过 MD5 加密,自行跟栈分析:

LC["cypher"]算法如下,最终的 KJ 算法,传了三个参数,解码还原的Ls["reload"]()、requestCode 以及 undefined:

function(La, LM) { var Lr = window["decodeURIComponent"](window["atob"](LM)); return KJ(Lr, LC["config"]["requestCode"], La); }

跟进到 KJ 中,算法如下:

function KJ(Lc, Le, LH) { var Li = KA["Kaito"](Lc, Le); return KC(Li, LH); }

KA["Kaito"]Kq(Km(Ll, Lq)),直接都扣下来即可。而 KC 中,就是几个验证码存在差异化的点之一,在拼图滑块的逻辑流程中,由于 Le 为 undefined,因此直接 return 了 Li,也就是最终的_token值:

如果是滑条,La 为 false,逻辑会继续向下走,并且图标点选和滑条,后续的加密逻辑,也并不一样,这是需要注意的点。直接单步跟进分析即可,都不算复杂:

behavior

接下来分析验证接口的关键参数behavior,该参数可以按照前文思路跟栈逐步分析,也可以直接搜索behavior关键词,没做混淆,能够直接定位到。LC["verifyData"]包含轨迹、时间戳等参数,LM 为 requestCode,Ls 此处是 undefined:

KB 各算法没有很特别的,直接按需扣下来即可,LH 若为布尔类型值,会多走一步Li = Ki(Li)

function KB(Lc, Le, LH) { var Li = KA["Kaito"](JSON["stringify"](Lc), Kf(Le)); return (typeof LH !== "boolean" || LH) && (Li = Ki(Li)), KC(Li, LH); }

Authencation

直接搜索关键词,无法定位Authencation,那就和_token一样,一步步跟栈分析。verify接口会校验Authencation参数,从该接口的堆栈中,向上跟栈分析,看哪一步没有,到哪一步又有了即可。

如下图所示,在LD = I2(Li, LF, LC, Lo)之后,Authencation的值就生成了:

跟到I2中分析,Authencation生成位置如下,也就是 Ls 的值,也校验了一些环境、版本、请求参数等,断点分析即可,若触发请求异常,是会导致部分参数黑掉的:

结果验证

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 19:39:01

LangFlow实时预览功能揭秘:即时调试LangChain应用不再是难题

LangFlow实时预览功能揭秘:即时调试LangChain应用不再是难题 在构建智能对话系统、自动化文本处理流程或复杂AI代理时,开发者常常面临一个共同的困境:修改一行提示词后,需要完整运行整个链路才能看到结果。这种“写代码 → 运行 →…

作者头像 李华
网站建设 2026/4/9 19:11:19

零延迟核销系统是如何炼成的?——基于Open-AutoGLM的高并发处理架构详解

第一章:零延迟核销系统的时代背景与行业挑战在数字化经济高速发展的今天,企业对交易处理的实时性要求达到了前所未有的高度。传统核销系统依赖批量处理和定时调度,往往存在分钟级甚至小时级的延迟,已无法满足高频交易、实时风控和…

作者头像 李华
网站建设 2026/4/16 11:10:29

为什么你的Open-AutoGLM在边缘设备上延迟高?一文揪出根本原因

第一章:Open-AutoGLM 边缘计算部署优化 在边缘设备上高效部署大型语言模型(LLM)是当前AI系统优化的重要方向。Open-AutoGLM 作为支持自动代码生成与轻量化推理的开源框架,其在资源受限环境下的性能表现尤为关键。通过模型剪枝、量…

作者头像 李华
网站建设 2026/4/16 12:35:38

3天掌握Open-AutoGLM旅游辅助系统(从入门到精通的完整路径)

第一章:Open-AutoGLM旅游辅助系统概述Open-AutoGLM 是一个基于开源大语言模型的智能旅游辅助系统,专为提升旅行规划效率与个性化体验而设计。该系统融合自然语言理解、行程推荐算法与多模态数据处理能力,支持用户通过对话方式完成目的地推荐、…

作者头像 李华
网站建设 2026/4/15 23:35:08

为什么你的任务无法实时同步?Open-AutoGLM底层架构深度剖析

第一章:为什么你的任务无法实时同步?Open-AutoGLM底层架构深度剖析在构建基于大语言模型的自动化系统时,开发者常遇到任务状态不同步、响应延迟甚至执行丢失的问题。这些问题的根源往往深藏于系统的底层架构设计之中。Open-AutoGLM 作为一款面…

作者头像 李华
网站建设 2026/4/16 1:00:18

揭秘Open-AutoGLM协议栈:为何它能统一百万级IoT设备?

第一章:揭秘Open-AutoGLM协议栈的核心理念Open-AutoGLM 是一种面向自动化大语言模型集成的开源协议栈,旨在实现异构AI系统间的无缝通信与任务协同。其核心理念围绕“语义对齐、行为自治、动态适配”三大支柱构建,使不同模型能够在统一框架下理…

作者头像 李华