前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >极验滑块流程简单分析(内含ast源码)

极验滑块流程简单分析(内含ast源码)

作者头像
懒py夏洛
发布2022-06-02 08:34:01
1.3K0
发布2022-06-02 08:34:01
举报
文章被收录于专栏:python爬虫与js逆向

最近这两天有时间就水几篇文章

群友有提到极验的滑块

鸭鸭同志前面很多滑块的分析单单少了经典的极验

简单开个头,分享一个以前记过的流程

极验滑块流程(以demo为例):

https://www.geetest.com/demo/slide-bind.html

1、获取 gt,challenge :

https://www.geetest.com/demo/gt/register-slide?t=时间戳获取

2、获取 validate(解决滑块验证码):

①获取滑块图片地址以及参数:

依次访问(其中 gt,challenge 为第一步获取的)

https://api.geetest.com/gettype.php?gt={}&callback= ,

https://api.geetest.com/get.php?gt={0}&challenge={1}&''lang=zhcn&pt=0&w=&callback=,

https://api.geetest.com/ajax.php?gt={0}&challenge={1}&lang=zhcn&pt=0&w=&callback=,

返回验证类型为 slide

可以发现上面的w直接传了空值,针对滑块可以这样子写,能过不就行了

https://api.geetest.com/get.php?is_next=true&type=slide3&gt={}&challenge={}&lang=zh-cn&https=true&protocol=https%3A%2F%2F&offline=false&product=embed&api_server=api.geetest.com&isPC=true&width=100%&callback=geetest_1,

返回验证码图片的地址,后续需要的 参数c,s !!!以及返回34位的challenge(后续需要的challenge为34位challenge)

②图片还原及缺口位置loc的获取:

上一步获取了图片的地址,将原图和缺口图片还原,同时图片还原的时间为imgload参数

③初始轨迹列表 track获取:

列表由[x, y, t], x为移动的距离,最后x的值为loc的大小,t为时间,最后t的值为passtime

极验成功率和轨迹关系很大噢!!!

④轨迹aa获取

由track经过第一次加密得到的字符串,再和参数c,s经过第二次加密得到

⑤关键参数w的获取:

所需参数:

字典i:其中

lang,ep为定值(其中tm参数可为空,其余为定值) ,

userresponse由loc和challenge(34位)加密得到

passtime,imgload,aa上面获取的参数,

rp为gt,challenge(32位),passtime加密得到;

RSA加密生成的a和aes_key

AES加密生成的数组c(密钥aes_key,加密内容为i(字符串格式))

数组c加密生成字符串u

参数w = u + a

⑥验证即可

怎么样 看起来是不是很简单~

new new new 下面来看看极验的还原吧

这是关键的加密位置

还原后

这样子就够啦~ 至于套娃数组的处理想处理的可以参考之前苏宁的思路一样的~至于其他的。。都已经这样子了你还搞不定,,那你还追求还原度干嘛呢

只要得到方便自己破解的程度即可,下面附上源码:

首先找出解密函数,文件最上面一顿复制就好 形式都一样

代码语言:javascript
复制
const decrypt = {
    CallExpression(path) {
        const node = path.node
        if (node.arguments.length !== 1 && !t.isNumericLiteral(node.arguments[0])) return
        const number = node.arguments[0].value
        if(typeof number !== "number") return;
        # 修改函数名        
        var value = sN_mt.$_CU(number)
        path.replaceWith(t.valueToNode(value))
    },
    // 处理编码混淆 \uxxxx \x
    StringLiteral(path) {
        const node = path.node
        delete node.extra;
    }
}

traverse(ast, decrypt);

这样子就可以啦~

本文到此结束~看阅读量及反馈看后续是否需要详细的分析吧~

后续预告 周末或者下周时间可能准备一篇5代的流程或者后缀的分析吧gogogo!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爬虫与js逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档