hcaptcha(hcp)无感验证码逆向闲谈

xionghazi 发布于 2025-02-20 1730 次阅读 最后更新于 2025-06-13


本文内容仅限于学术研究和技术讨论,实际应用中应严格遵守相关法律法规和服务条款。本文内容遵守CC BY-NC-ND 4.0协议,禁止任何修改后二次传播。

1.识别 hcaptcha 验证码

hcaptcha 验证码(以下简称 hcp)可以通过两种方式识别,第一种方式是通过验证码图标,例如下面的这张图片就是 hcp 验证码:

当然有些网站的 hcp 无感是不会有点击选框的,这个时候我们就可以通过第二种方式,即接口去识别,主要的几个接口长这样:

2.接口闲谈

在上面说的四个接口中最重要的一个接口就是 hsw.js 这个,最主要的加密流程就是在这里面进行的,进行加密的时候会用到 checksiteconfig 接口返回的 req 字段,最后调用 getcaptcha 接口进行校验。

在浏览器上得到 hsw.js 文件后就可以去分析加密流程了,hsw.js 文件每周都会进行一次更新,所以各位分析的时候建议保留一份下来,核心加密算法是用 wasm 实现的,因此这里建议各位直接通过补环境的方式去实现加密。

如果大家要去打断点跟代码的话,这里建议大家去看一下 hsw 这个方法中最后 return 的那个函数,那里也许是一个非常不错的切入点。

关于最后调用 getcaptcha 接口进行校验时,携带的表单参数是乱码这个问题,各位读者可以尝试去 hcaptcha.html 这个接口中寻找变成乱码前的字符串,答案就在这里面。

3.结果展示

getcaptcha 接口请求结果返回了 P1_...... 时就代表你的环境/算法是正确的。如果返回结果不是 P1_......,而是点选验证码,那么就代表你的环境没有补正确或者纯算是错误的。

特别鸣谢:何老师和奥特曼,感谢其在研究过程中提供的宝贵意见。以及可爱的懒洋洋大王。