geetest极验空间推理验证码破解与研究

article/2025/9/10 15:50:51

        看了很多的破解滑动验证码,决定破解一下空间推理验证码。破解思路,通过分析接口请求,对图片物体进行定位分类,通过模拟请求破解验证码。

研究的网站为 https://www.geetest.com/show 

 

一、极验请求分析

请求详细

一、register-space

获取gt(一般一个网站是固定的)、challenge(验证流水号,服务端 SDK 向极验服务器申请得到)参数。

challenge参数只能使用一次,一但后面get.php请求后就无法再请求,同时换ip的情况下也会失效。

 二、黑色的三个请求只要根据他的参数照着模拟就可以了,不需要处理结果

 第一次的get.php和ajax.php是无感验证,执行fullpage.js,收集浏览器信息,加密w参数直接填空就可以了。

三、红色的请求

https://api.geetest.com/get.php

获取图片和文字加密信息等

请求参数

is_next: true
type: click
gt: c9428d9361cd70d26e28d7cd780ec640
challenge: 263e2e11a85337b92d821c158c1b438f
lang: zh-cn
https: true
protocol: https://
offline: false
product: float
api_server: api.geetest.com
isPC: true
autoReset: true
width: 100%
callback: geetest_1644770447212

请求响应

 响应中,pic,c,s这3个参数非常重要,在生成w加密参数是需要用到它们

"data": {"theme": "silver","theme_version": "1.5.0","static_servers": ["static.geetest.com/", "dn-staticdown.qbox.me/"],"api_server": "api.geetest.com","logo": false,"sign": "\u8bf7_\u70b9\u51fb_\u5728\u5927\u578b\u7eff\u8272\u7403\u4f53\u540e\u9762\u7684\u7ea2\u8272\u7269\u4f53\u3002", # 物体的文字信息"pic": "/nerualpic/space_l1_zh_2019.07.17/space/587417a058088f2f5934e22fcc503980.jpg",  # 图片的url地址,同时也是后续加密生成w需要"pic_type": "space","num": 0,"c": [12, 58, 98, 36, 43, 95, 62, 15, 12],  # 后续生成w需要"s": "514c622c",  # 后续加密生成w需要······}

点击坐标后提交,将坐标等信息加密在w中post给服务器,返回validate的值表示验证成功

https://api.geetest.com/ajax.php

请求参数

'gt': 'c9428d9361cd70d26e28d7cd780ec640',
'challenge': '263e2e11a85337b92d821c158c1b438f',
'lang': 'zh-cn',
'pt': 0',
'client_type': 'web',
'w': 'Y1gV9CACfWsfd)vtGUQD(WuKBZnmxhgfpXfD)qDHwhG(h1F4rOco··· //点击的坐标和一些信息的加密信息(点击坐标,图片pic,上面的c和s内容)
'callback': 'geetest_1644752017507'

请求响应

{"status": "success", "data": {"result": "success", "validate": "23ff2a4fddac68b9e40884befcfbb9af", "score": "1"}
}

有了validate就可以和gt,challenge一起提交给需要登录的网站接口做验证了。

 二、JS反混淆

        破解的关键是获取加密参数生成方法。主要在click.3.0.2.js文件中,因此我们学习大佬分析AST的方法将他们反混淆,然后去分析debug。具体可以看看大佬的方法,我就不重复造轮子了。

JS逆向:AST还原极验混淆JS实战

将网站混淆过的源代码下载下来,格式化后将上面几个函数(内容也要的)拷贝到还原方法前,文件位置替换成下载下来的文件地址。运行就会生成反混淆的代码。

AtULc.BaI = function() {}();
AtULc.CJR = function() {}();
AtULc.Dvg = function() {};
AtULc.EyS = function() {};
function AtULc() {}// 需要解码的文件位置
let encode_file = "click.3.0.2init.js"
// 解码后的文件位置
let decode_file = "click.3.0.2.js"

将代码反混淆后可以使用chrome的reres插件将原本混淆的代码替换

 本地地址要加上file:/// ,同时要在管理reres插件的界面允许访问本地地址

源码我写下来放在github了 点击进入。同时因为不方便下载reres插件,我也将插件上传在github

三、w参数分析

替换文件后打开chrome的开发者工具,再sources中搜"w"

看d的其他参数,显然这个w就是这里产生的,打上断点去提交验证码

 w是p+u,继续往上一步一步分析。

f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"]( f);

u = r["fTbG"]();

1、参数 p 生成

f中有两个参数 de["stringify"](o) 和 r["gCdf"]()

一、de["stringify"](o)

de["stringify"](o) 中只有一个参数o,往上找o

var o = {"lang": n["lang"] || "zh-cn","passtime": t,"a": e,"pic": n["pic"],"tt": pe(s, n["c"], n["s"]),"ep": r["eRts"]()
};

"lang": n["lang"] || "zh-cn" 默认等于"zh-cn"就行

"passtime": t  通过验证时间,随便多少都行888之类,或者就按你debug时的大小

"a": e   e就是点击坐标,最小"0_0",最大"10000_10000",为xy的百分比

"pic": n["pic"]  get.php响应中"pic"中内容

"tt": pe(s, n["c"], n["s"])  get.php响应中"c"和"s"的内容

"ep": r["eRts"]() 这个参数可以为空  令"ep"= {}

其中"tt": pe(s, n["c"], n["s"]) 

就在定义 的上方 s = r["NfwI"]["EhLr"]()

找到EhLr

所以s=e["Xkir"](e["BjJO"](t)

打印出 t 看看

可以看出就是鼠标移动点击的信息和时间,把chrome切换成手机调试模式

 可以将鼠标操作缩短到

 经过测试,这里面的点击坐标为页面的坐标,多少没有关系,保留即可,只要将其中的时间戳换成破解的时间。间隔的时间仿造图中时间差即可。至于能否更简洁更简单办法可以自己尝试一下。

"Xkir""EhLr""BjJO"这些函数都掏出来,修修改改到把 传参进去得到 s

最后在从代码里扣出pe函数,把之前get.php响应中的 和 一起传入就得到了"tt"的值

二、r["gCdf"]()

找 gCdf 这个函数

t = ae()

继续把ae也扣下来,把他们一步步连起来来即可。 

f = Q["encrypt"](de["stringify"](o), r["gCdf"]());
p = h["YQee"]( f);

2、参数 u 生成

 u = r["fTbG"]()

可以看出用到了生成 p 时用到的gCdf

k 抠出来直接调用 gCdf就可以了 

这样 w = p + u 就全部破解完了,可以参考下我上传在github上代码 点击进入


http://chatgpt.dhexx.cn/article/72NHKJQp.shtml

相关文章

googletest简介

googletest是由谷歌的测试技术团队开发的测试框架,使用c实现,具有跨平台等特性。 好的测试框架 引用谷歌给出的文档,好的测试应当具备以下特征: 测试应该是独立的和可重复的。调试一个由于其他测试而成功或失败的测试是一件痛苦…

破解极验(geetest)验证码

最近在搞爬虫的时候在好几个网站都碰到了一种叫做geetest的滑动条验证码,一直没有太好的办法只能在触发这个验证码后发个报警去手动处理一下。http://www.geetest.com/exp_embed是他们官网的样例。 后来研究了下觉得要破解这个验证码有这么几个问题: 无法直接通过发送…

破解滑块验证码最新版(GEETEST 95%以上通过率)

一、滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页…

极验GeeTest简单demo

概述 人机验证 3.0 解决方案(基于生物行为与人工智能) 2012 年极验将人机验证从1.0时代推动到了 2.0 时代。在 5 年时间中,超过千亿次数据学习与优化,极验利用三角防护理论和 AI 智能决策引擎,全面更新安全架构。2017 年,正式推出…

极验geetest的使用

项目中会遇到 滑块验证的需求: 前端vue里 1.新建/utils/gt3.js "v0.4.8 Geetest Inc.";(function (window) {"use strict";if (typeof window undefined) {throw new Error(Geetest requires browser environment);}var document window.do…

爬虫进阶教程:极验(GEETEST)验证码破解教程

摘要: 爬虫最大的敌人之一是什么?没错,验证码!Geetest作为提供验证码服务的行家,市场占有率还是蛮高的。遇到Geetest提供的滑动验证码怎么破?授人予鱼不如授人予渔,接下来就为大家呈现本教程的精彩内容。 一…

【已解决】安卓手机的GeeTest文件夹是什么

网上关于安卓系统手机的GeeTest目录是什么的文章和帖子,绝大部分打着GeeTest的标题,内容都是牛头不对马嘴,答非所问,没一个能解释清楚。 我刚刚找到了正式的答复如下: Android 手机上的“geetest”目录与名为“极验”的…

正定二次型与半正定二次型

对于实二次型其中A是实对称的,下列条件等价: 正定的 (1)是正定的. (2)它的正惯性指数p等于n. (3)有可逆实矩阵C,使得其中 (4)实对称矩阵A是正…

怎么对document.write写出来的内容调整对齐方式_【求职技巧】给少数人:硅谷BAT级别的简历这么写...

我什么都不会”,“我什么都没干”,“这个项目很水”,这是我在帮别人修改简历时听到的最多的几句话。难道你真的什么都不会吗?真的什么都没干吗?真的很水吗?其实很多情况下,是这样的。 但是很水就放弃治疗了吗?不会的。放下无谓的抱怨和遗憾,好好梳理自己,认真编…

c语言八皇后问题经典算法,经典算法之八皇后问题

八皇后问题是一个古老而又著名的问题,是学习回溯算法的一个经典案例。今天我们就一起来探究一下吧! 时间退回到1848年,国际西洋棋棋手马克斯贝瑟尔提出了这样的一个问题, 在88格的国际象棋上摆放八个皇后,使其不能互相…

从八皇后问题思考回溯法

一、八皇后问题 八皇后是经典的回溯法问题,题目是说将八个皇后,放到88的国际象棋棋盘中中,使得任意两个皇后都不能在同一行、同一列以及同一条对角线上。下图是一个四皇后的搜索示意图。 八皇后问题可以通过暴力法求解,代码也很…

八皇后问题(Python)

一.问题简介 八皇后问题: 如何能在 8*8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了到达此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 二.几种思路和方法 1.回溯法递归思想 如图所…

八皇后问题详解(四种解法)

所有源码都在github上(https://github.com/seasonyao/eight_queen_question) 如果你去百度百科八皇后这个问题,你会发现人家也是历史上有头有脸的一个问题,最后一句“计算机发明后就有一万种方式解决这个问题”读起来也让程序猿们很快活。闲话少说,开始阐述我的思路: 最…

八皇后问题

八皇后问题 八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯贝瑟尔于1848年提出的问题,是回溯算法的典型案例。 问题表述为:在88格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或…

八皇后问题(适合初学者的写法)C语言

什么是八皇后问题: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出:在88格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能…

八皇后问题,秒懂递归回溯(有图详解|c语言)

目录 👸🏻前言 👸🏻题目介绍 👸🏻引入: 👸🏻解决思路: 👸🏻理论存在,实践开始! 👸&#x1f…

利用ngrok实现域名映射局域网ip

前言 相信很多开发者都有这样的需求,需要让外网访问你本地的服务器,方便调试本地代码,或者让别人体验到自己做的应用。那么这时,我们需要做的就是将我们本地的端口映射到一个外网的端口上,也就是内网穿透。常见的解决…

python调用手机摄像头,实现实时调用摄像头,需要你的电脑和手机在同一个局域网内

1、android手机上安装一款APP:IP摄像头,app的图片如上图 2.调用代码如下 import cv2cv2.namedWindow("camera", 1) # 开启ip摄像头 video "http://admin:admin10.0.0.32:8081/" # 此处后的ipv4 地址需要改为app提供的地址 cap c…

02、处于不同局域网下的Socket通信(网络部分理论知识)

目录 一、服务器 1、服务器的种类和功能 2、服务器的操作系统 3、IIs、Apache、Tomcat 4、云服务器 弹性云服务器(Elastic Cloud Server,ECS) 云服务器安全组 二、OSI七层模型与TCP/IP五层模型 三、外网、内网、公网、私网 内网穿透…

使用wireshark抓取聊天信息(局域网内的udp通信)

文章目录 1,实验目的2,实验操作3,总结4,附件 1,实验目的 1.分析这程序所采用的是udp还是tcp 2.在抓取包中找到窃取到的聊天信息 (英文字符和汉字可能经过了某种编码转换,数据包中不是明文) 3.如果是网络连…