找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

6362

积分

0

好友

800

主题
发表于 3 天前 | 查看: 0| 回复: 0

有亿点点写不动。

hCaptcha 人工点选验证码界面

hCaptcha 动物识别验证码界面

哪怕你是个写了几年爬虫的老司机,碰到 hCaptcha 大概率也得心里暗骂一句。

在现在的验证码圈子里,这货绝对算得上是“天花板”级别的钉子户。动态 JS 混淆、WASM 黑盒加密、再加上变态的浏览器指纹检测和每天更新的验证码图片,一套组合拳下来,直接把不少靠开源框架“一把梭”的脚本小子劝退了。

今天不整那些虚的理论,咱直接用大白话聊聊,这玩意儿到底恶心在哪?业内大佬们又是怎么把它玩弄于股掌之间的。

一、拆解这货的“老底”:它在后台偷偷干嘛?

平时咱们抓包看 hCaptcha,最核心的其实就三个接口。看懂了这三个,你就摸清了它的套路:

  1. /checksiteconfig
    这是它的“前哨站”。你一进页面,它先偷偷摸摸测一下你这个站点的配置,顺便给你搞个初筛。如果觉得你像个好人,可能就让你无感通过了;如果觉得你不对劲,对不起,准备做题吧(这里好像不太对,这是初始化配置)。

  2. /getcaptcha
    一旦决定考验你,这个接口就会去拉取题目。这时候最恶心的地方来了:你在发请求的同时,前端会打包一堆极度复杂的浏览器环境指纹传过去。要是被它发现你用了 Puppeteer 或者自动化工具有改写痕迹,你连题目长啥样都见不到。

  3. /checkcaptcha
    最后一步,提交你的答题结果。这里面除了你点图的坐标,还塞了一个用前端硬加密生成的参数(比如 n 值或者 motion-data 鼠标轨迹)。服务器看你顺眼了,才会把最终的 Token 赏给你。

二、聊聊它的几大“毒点”:为什么这么难啃?

很多新手喜欢用“老三样”——全局搜索、扣 JS 逆向 去硬怼,结果往往是进去就出不来。因为它设了三个非常阴险的坎:

1. 搞个 hsw.js 还不够,里面居然藏了 WASM,并且轨迹包含一个 vm_data 参数算是一个 VMP,特殊版本还藏着一个 VMP,在 103 大数组中

hCaptcha 的加密逻辑全都在动态加载的 hsw.js 里面。
最搞人心态的是,它不光代码混淆得亲妈不认,里面还塞了 WebAssembly (WASM)。这意味着最核心的加密算法(比如那个要命的 n 参数)是在一个编译好的“黑盒”里运行的。你想纯靠看 JS 逻辑去还原算法?基本属于自闭行为。

2. 堪称“反侦察机”的指纹检测

现在的爬虫指纹,它基本上全家桶式地扫一遍:

  • 硬件渲染:Canvas、WebGL 特征。
  • 声音特征:AudioContext 各种参数。
  • 自动化痕迹:不光查 window.navigator.webdriver,连各种改写函数的细微马脚都能揪出来。
    只要你露出一丝“非人类”的气息,直接送你进小黑屋。

3. 连你手抖不抖它都要管(motion-data)

你以为把图片认出来就完事了?
hCaptcha 会盯着你鼠标的移动速度、加速度、滑动的曲线。如果你用脚本画一条笔直的死线拉过去,或者点击的间隔精准得像个无情机器,那对不起,图片全对也得重来。

三、那么,业内都是怎么破局的?

被恶心了这么久,大牛们也摸索出了不同的解题思路。目前主流就这三个流派,大家各显神通:

  • 流派一:RPC 远程调用(俗称“借鸡生蛋”)
    怎么玩:直接在真浏览器里挂个油猴脚本或者扩展,当脚本需要加密参数时,直接让浏览器里的原版 hsw 函数帮你算,算完传回来。
    大实话:属于降维打击。不用管指纹和算法,开发贼快。缺点是并发太低,很吃内存,没办法大规模跑。

  • 流派二:Node.js 强行补环境(这个方案也可以,我第一个版本就是 Node 全通杀包括 Steam 嘎嘎无感,但是维护也麻烦,一两周维护一次,已废弃,不想维护了)
    怎么玩:把 hsw.js 和 WASM 抠出来拿 Node 跑。既然它要查浏览器环境,那咱们就用 Proxy 疯狂伪造 window、document、navigator。
    大实话:能跑并发,不用开浏览器。但缺点是太卷了。官方隔三差五加个指纹检测点,你就要跟着天天熬夜修补环境代码。

  • 流派三:纯算法硬啃(天花板级别)(目前这个方案我觉得不太可行,复杂度太高,当前是 vm_data 更新频繁,hsw 更新频繁)
    怎么玩:用 AST(抽象语法树)反混淆 JS,再把 WASM 吐成 C 语言硬看底层逻辑,纯手撕算法。
    大实话:运行速度飞快,并发拉满。但开发成本和技术门槛极高,非顶级逆向大牛一般不轻易碰,性价比太低。

🚬 行业潜规则:
如果是商业项目赶进度,绝大多数团队根本不会花几个月去硬磕这个。大家都是直接对接第三方打码平台,花点小钱直接调 API 拿 Token,把精力留给核心业务。但是目前为止第三方也拉胯,但凡遇到检测强度高一些的。

四、写在最后

说白了,验证码攻防就是一场搞心态的成本博弈。防守方拼命拉高门槛让你知难而退,而爬虫则是在时间、高并发和防检测之间找平衡。

你在搞 hCaptcha 的时候,被哪一步卡得最难受?是 WASM 算法看不懂,还是鼠标轨迹总被识别?

五、实战案例

案例一:

https://store.steampowered.com/join/?redir=about%2F

Steam 案例 hCaptcha getcaptcha 接口请求日志

案例二:

https://help.steampowered.com/zh-cn/wizard/HelpWithLoginInfo?issueid=406

hCaptcha checkcaptcha 接口验证请求日志

案例三:

https://discord.com/login

Discord 登录 hCaptcha 凭证校验失败日志

案例四:

https://accounts.evernote.com/login-with-password

Evernote hCaptcha 接口响应日志

案例五:

hCaptcha 训练标注与 checkcaptcha 日志




上一篇:hCaptcha无感逆向:Steam注册页补环境实战全流程
下一篇:Chrome for macOS 扩展加载缓慢:谷歌已提升优先级调查点击卡顿问题
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-2 23:45 , Processed in 1.451835 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表