news 2026/5/9 18:52:06

【反爬虫】极验4 W参数逆向分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【反爬虫】极验4 W参数逆向分析

声明
本文只讲快速定位 跟栈过程 不提供完整代码 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关

逆向分析



验证接口当中 主要参数为W 其余参数在请求验证码时返回 W明文如下

{"passtime":3151,"userresponse":[2,2],"device_id":"","lot_number":"ed912d7b613d457784a0e0a183c2a128","pow_msg":"1|14|sha256|2026-04-14T09:14:53.636482+08:00|08c16c99330a5a1d6b7f4371bbd5a978|ed912d7b613d457784a0e0a183c2a128||99f6d6260560cb6f","pow_sign":"000097ffb9d37b0d88115d9eba712e73e5f89b01e27ed8ba3a19b439f8715a58","geetest":"captcha","lang":"zh","ep":"123","biht":"1426265548","yDWL":"hZGx","c2a14577":{"84a0e0a1":"7b61"},"em":{"ph":0,"cp":0,"ek":"11","wd":1,"nt":0,"si":0,"sc":0}}

其中userresponse会根据验证码类型的不同而不同,其中就是识别结果

快速定位

找到4代的JS代码 script断点或者直接根据请求的堆栈跟 很容易找到 名字叫做gcaptcha4.js的代码 直接全局搜索 symmetrical 或者 asymmetric

这就是加密的位置可以直接在这个function里打断点,粗略看一下 猜测2应该是个aes 1是个什么暂时不知道 断点直接打到return

可以看到是两段拼接的 第一段如下图

第二段

粗略看一下代码逻辑 第一段是一个AES加密 直接鼠标放到第一步搜索出来那里就会显示 模式为CBC 偏移量固定值"0000000000000000" 密钥n 是前面生成的 一会再弄


这里要注意一下return (0, _ᖈᖂᕸᕴ[_ᕸᕿᕸᖉ(161)])(u) + _ }
采用的是16进制编码 不能直接tostring
第一段 可以其实是一个rsa 只不过公钥直接搜索不到 使用模数n和指数e的十六进制字符串 生成公钥或者直接使用

function get__(plainText){const nHex='00C1E3934D1614465B33053E7F48EE4EC87B14B95EF88947713D25EECBFF7E74C7977D02DC1D9451F79DD5D1C10C29ACB6A9B4D6FB7D0A0279B6719E1772565F09AF627715919221AEF91899CAE08C0D686D748B20A3603BE2318CA6BC2B59706592A9219D0BF05C9F65023A21D2330807252AE0066D59CEEFA5F2748EA80BAB81';const eVal=10001;const nBigInt=BigInt('0x'+nHex);const nBuffer=Buffer.from(nBigInt.toString(16),'hex');const eBuffer=Buffer.from(eVal.toString(16),'hex');const jwk={kty:'RSA',n:nBuffer.toString('base64url'),e:eBuffer.toString('base64url')};const publicKey=crypto.createPublicKey({key:jwk,format:'jwk'});const message=Buffer.from(plainText,'utf8');const encrypted=crypto.publicEncrypt({key:publicKey,padding:crypto.constants.RSA_PKCS1_PADDING//对应 PKCS1_v1_5},message);let hexResult=encrypted.toString('hex');if(hexResult.length%2!==0){hexResult='0'+hexResult;}returnhexResult}

然后将两段破解的加起来 关于密钥n 往上跟可以看到e() + e() + e() + e()这样的东西 e函数很简单

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

大疆农业无人机T系列导入kml提示未找到boundary

大疆农业无人机导入kml提示未找到boundary属性是因为需要每个图形标注出来这个才能导入识别。发现一个软件可以直接一键转换。然后就能使用啦。快来试试吧。通过百度网盘分享的文件:大疆KML格式转....4 链接:https://pan.baidu.com/s/1YMkpCOpsPVhsK-bnl…

作者头像 李华
网站建设 2026/4/15 9:32:14

大麦网自动抢票完整指南:Python脚本实现智能秒杀

大麦网自动抢票完整指南:Python脚本实现智能秒杀 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到演唱会门票而烦恼吗?想要轻松获取周杰伦…

作者头像 李华
网站建设 2026/4/15 9:31:13

VdhCoApp 完整使用指南:浏览器视频下载的本地增强解决方案

VdhCoApp 完整使用指南:浏览器视频下载的本地增强解决方案 【免费下载链接】vdhcoapp Companion application for Video DownloadHelper browser add-on 项目地址: https://gitcode.com/gh_mirrors/vd/vdhcoapp VdhCoApp 是 Video DownloadHelper 浏览器扩展…

作者头像 李华
网站建设 2026/4/15 9:31:12

终极指南:如何用AEUX插件实现Figma到After Effects的无缝设计转换

终极指南:如何用AEUX插件实现Figma到After Effects的无缝设计转换 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 在当今数字设计领域,设计师面临着一个普遍难题…

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

小白程序员必看:收藏这7种AI Agent形态,秒懂2026年AI产品!

你是不是看到Agent满天飞,每个AI产品都在说自己是Agent,但你连Agent到底是什么都没搞清楚?这种迷惑感不奇怪。 2026年的AI行业,Agent这个词已经被滥用了。一个能自动回复消息的客服机器人叫Agent,一个能自己写代码调试…

作者头像 李华
网站建设 2026/4/15 9:27:22

Qwen3-0.6B-FP8镜像免配置部署:无需修改代码,直接运行start.sh启动服务

Qwen3-0.6B-FP8镜像免配置部署:无需修改代码,直接运行start.sh启动服务 想快速体验一个轻量级但功能完整的AI对话模型吗?今天给大家介绍一个“开箱即用”的解决方案——Qwen3-0.6B-FP8镜像。这个镜像最大的特点就是零配置,你不需…

作者头像 李华