某易盾滑块

声明

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!

请求分析

验证码:aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc=

我们可以看到这里已经改版了,前面版本不一样,这里删除了bd接口链接,也扫了一些加密参数

第一个 getconf 请求

 就需要一个id就行了,其他固定值,下面是获取到的数据

接着就是获取背景图片链接这里需要解决fp以及cb两个参数

 背景图片这里需要获取到token 后续加密data中参数需要用到,这里token并不是上面getconf请求得到的

 参数分析

pf参数

这个就直接来到pf参数

 首先我们先找到栈

 点击之后就跳转到这个js文件里面,2.22.0xxx.js文件

更进来之后我们发现他是一个ob混淆代码,这个通过AST解密或者v_jstools解密都可以

AST解密太麻烦了我就直接用v_jstools解密

 接着就是替换本地js文件,这里看我的这篇文章:fiddler替换本地文件_fiddler 修改html_qq_2081540885的博客-CSDN博客

全局搜索http

 这里就可以看到这个fp参数已经生成,是l,接着网上就可以看到l =s[n(3018)] 

 接着就是向上跟栈

 

 来到这个地方,此时我们可以看到这个this[t(3220)]fingerprint已经生成,这里就网上看,t(3220) = state,

 接着就是网上看可以找到,this[t(3220)]赋值的地方,这里由于我刷新之后,代码替换格式化之后,这里行数就变了不过也就是网上十几二十行位置

this.state 定义在第 5186 行,打断点后换个模式的滑块即会断住,因为 fp 参数在滑块图片生成之前生成所以这里我们就得重新搜索:

接着向上跟栈到 a 中,此时的 fingerprint 已经生成值,参数 r 定义在第 4006行,为 window["gdxidpyhxde"],可以通过 hook 的方式定位:

(function() {
    'use strict';
    var fp_hook = "";
    Object.defineProperty(window,'gdxidpyhxde',{
        set:function(val){
            console.log("fp参数的值为: ", val);
            debugger;
            this._value = val;
            return val;
        },
        get:function(){
            return fp_hook;
        }
    });
})();

清除浏览器缓存后刷新网页即会断住:

此时 fp 参数的值已经生成,向上跟栈到 N 中,由下图可知,fp 参数的值为 Ri + : + 时间戳得到的断住之后往上跟一个栈,就可以看到B()更进去就行了:

  这里看着扣就行了,需要注意的是 R 参数,扣完如果缺少环境会导致生成数字不全,校验了 canvas、languages、User-Agent、localStorage,toDataURL 等等,需要注意的是官网请求头中同样校验了 languages,其他的例如知乎登录、某税务局并没发现存在这个问题:

fp参数补的时候需要特别细心,这里面有try语句所以就是需要慢慢看

cb参数

fp参数解决之后这里来到了cb 参数

全局搜索cb,就可以直接找到了生成位置:

接着就是更进去看看,发现这个uuid 就是cb参数,接着就是扣下来即可

扣下来之后我们发现还有一个函数需要扣:P(e)

这里和上面的一样,细心再细心,其中包括了一个try语句

data参数

接着就是data参数

data 由:d ,m ,p ,ext四个参数组成,这里一个一个看,首先是d

data中d参数

 其中包括了轨迹加密,全局搜索 onMouseMove 之后打上日志断点。

 可以看到这里 f 就是轨迹位置,这个u 网上上看就可以看到u = this[e(886)].state[e(1050)],

u = this[e(886)].state[e(1050)]
u = this['$store'].state['token']

u就是图片链接返回的token, 接着就是轨迹加密。将h函数扣下来即可

data中o参数

 接着就是o

o = p(h(a, parseInt(this.$jigsaw[e(1487)][e(2436)], 10) / this[e(3360)] * 100 + ""));
o = p(h(a, parseInt(this.$jigsaw['style']['left'], 10) / this['width'] * 100 + ""));

其中 a 是图片链接中token,其中width 图片宽度固定值 320, parseInt(this.$jigsaw['style']['left'], 10) 为滑动距离

这个h函数跟进去发现就是轨迹加密时候我们扣的函数,这就直接调用就行了

这里扣下来就行了,cb参数哪里扣下来的函数,让我们少扣了不少。

data中ext参数

ext = p(h(a, this[e(2755)] + "," + this.traceData.length))
ext = p(h(a, this['mouseDownCounts'] + "," + this.traceData.length))

其中 this.traceData.length 是轨迹加密的全部长度,之前我们说过加密只是传入了50个,这里是全部长度并不只是50个,mouseDownCounts 是鼠标按下的次数

最后结果展示

至此复现完毕,有什么问题可以联系博主

结言

如果失败大概率是 data的问题,注意环境问题,校验轨迹严格,无感几乎不校验轨迹,根据观察,最近可能是要更新一些逻辑,官网存在阉割情况,建议去实测,网易严选(js未混淆)、知乎(校验参数acToken)、某苏税务局等。

本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,联系作者立即删除!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!要安装逆向网易易盾滑块验证,您需要按照以下步骤进行操作: 1. 在您的项目中引入网易易盾滑块验证的 JavaScript SDK。可以通过在页面的 `<head>` 标签中插入如下代码来加载 SDK: ```html <script src="//nosdn.127.net/yidun/2.17.0/yidun.js"></script> ``` 2. 在页面中设置一个用于展示滑块验证的容器元素。在合适的位置插入如下代码: ```html <div id="captcha"></div> ``` 3. 在页面中初始化滑块验证。在页面加载完成后,调用 `init` 方法进行初始化操作,并传入相关参数。示例代码如下: ```javascript window.onload = function() { var options = { captchaId: 'YOUR_CAPTCHA_ID', mode: 'popup', width: '300px', onVerify: function(err, data) { if (err) { // 验证失败,请进行相应处理 } else { // 验证成功,请进行相应处理 } } }; var nc=initNECaptcha(options, function (instance) { // 初始化成功后得到验证实例 instance,可以调用实例的方法 }, function (err) { // 初始化失败后触发该函数,例如网络错误,cdn 地址无法访问等 }); } ``` 在上述代码中,您需要将 `YOUR_CAPTCHA_ID` 替换为您在网易易盾申请的验证码 ID。此外,您还可以根据需要自定义其他参数,比如 `mode`(弹出框模式)、`width`(滑块宽度)等。 注意:为了确保安全性,强烈建议将验证请求发送到服务器进行二次校验,以防止客户端被篡改。 希望以上信息对您有所帮助!如果您有任何其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值