顶象滑块非常简单的案例学习

声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究

案例分析

目标案例:aHR0cHM6Ly93d3cudml2by5jb20uY24vc2VydmljZS9tb2JpbGVQaG9uZUF1dGhlbnRpY2l0eUNoZWNrL2luZGV4

  1. 对应接口和难点
    a的请求
    在这里插入图片描述

c1的第一次请求
在这里插入图片描述
c2的第二次请求
在这里插入图片描述
v1的请求
在这里插入图片描述

参数分析

观众老爷们最近有点忙,也没时间学习,这两天有时间了正好学一下顶象的滑块,这个非常弱化版的,主要是学一个思路。
通过修改发现,c值可以赋值为空,t值也是同理,ak是产品id,aid是dx-+时间戳加随机数,其他固定就行
在这里插入图片描述
通过里面的返回值可以知道p1和p2分别对应的应该就是缺口和图片,o是对图片的还原,sid是后面需要的
在这里插入图片描述
那么我们先来看图片的还原,我这边使用的canvas去下的断,可自行下断尝试,之前的滑块里面有讲过
在这里插入图片描述
那么我们继续看第一次v1的Param,通过initiator
在这里插入图片描述
我们可以看到通过断点发现他是通过对这些参数进行的加密
在这里插入图片描述
这里可以看到lid的生成就是时间加一个函数,我们直接扣下来就行,喜欢那个下面自取哈
在这里插入图片描述
lid的生成js代码

function lid() {
            for (var i = 32, a = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', u = [], f = 0; f < i; f++)
                u[f] = a['charAt'](Math['floor'](Math.random() * a['length']));
            return u['join']("")
        };

function get_lid(){
    return (new Date).getTime() + lid()
}
console.log(get_lid())

python代码

import math
import random
  
def get_lid():
    a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    return "".join(a[math.floor(random.random() * len(a))] for _ in range(32))

可以看到appKey是固定的我已经刷了很多次了
在这里插入图片描述
那么我们来看Param的加密,可以看抠出来的js或者python, 第一次就是这样了
在这里插入图片描述
js版本

var u = "=x1LItAH4sf8gp6ewnXQTiKuF_5EkC2m7WjdrM"
    , f = "UlGhvYo3aRzcq-VPyJBb9NZOD0S";

function y(r) {
    return r.split("").reverse().join("")
};
function encode(r, o) {
            if (!r)
                return "";
            for (var i, a, u, f, c, s, l, v, g = "", p = 0; p < r[(v = "htgnel",
            v.split("").reverse().join(""))]; )
                i = r['charCodeAt'](p++),
                a = r.charCodeAt(p++),
                u = r['charCodeAt'](p++),
                f = i >> 2,
                c = (3 & i) << 4 | a >> 4,
                s = (15 & a) << 2 | u >> 6,
                l = 63 & u,
                isNaN(a) ? s = l = 64 : isNaN(u) && (l = 64),
                g = g + o.charAt(f) + o['charAt'](c) + o.charAt(s) + o.charAt(l);
            return g
        }

function S(r) {
    var e = encode(JSON.stringify(r), y(u + f));
    return e
};

S({
    "lid": "", // lid
    "lidType": 1,
    "cache": true,
    "appKey": "" // appkey 固定的
}) // 自己填写入参

第二次的入参是, 除了lid是上面生成的,我们直接用就好其他基本都可固定,然后调用上面的加密即可,到这里两个c1都已经结束了
在这里插入图片描述
我们接着看v1接口里面的ac的函数
在这里插入图片描述
每次可以发现在加密完之后会重载,他就是在第一次的ua
在这里插入图片描述
开始发现是空
在这里插入图片描述
这里是他的检测,这个网站检测的比较少,基本就是熟悉下流程
在这里插入图片描述
基本都是围绕这app进行的,那么我们可以多看app
在这里插入图片描述
可以看到这个是第一次
在这里插入图片描述
我们可以看到下面就是指纹了
在这里插入图片描述
那么我们继续看sendSA,可以发现是对sa进行的加密,sa是通过recordSA,后调用app函数
在这里插入图片描述
这里可以看到他是对滑块缺口进行的加密
在这里插入图片描述
那么到这里就结束了!!!
可以看下熟悉下顶象的流程,第二次滑块的正常调度依然可通过。
我们下期再见!!!
拜拜!!!
在这里插入图片描述

效果展示

第一次的
在这里插入图片描述
二次验证的
在这里插入图片描述

好的,以下是一个使用Bootstrap的滑块验证的完整案例: ```html <!DOCTYPE html> <html> <head> <title>Bootstrap滑块验证</title> <!-- 引入Bootstrap样式文件 --> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css"> <!-- 引入jQuery库 --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <!-- 引入Bootstrap的JavaScript文件 --> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script> <!-- 引入Bootstrap的滑块验证插件 --> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-slider/11.0.2/bootstrap-slider.min.js"></script> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-slider/11.0.2/css/bootstrap-slider.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <h1 class="text-center">Bootstrap滑块验证</h1> <hr> <form> <div class="form-group"> <label for="slider">请滑动滑块验证:</label> <input id="slider" data-provide="slider" data-slider-ticks="[1, 2, 3, 4, 5]" data-slider-ticks-labels='["1", "2", "3", "4", "5"]' data-slider-min="1" data-slider-max="5" data-slider-step="1" data-slider-value="1" type="text" /> </div> <button type="submit" class="btn btn-primary">提交</button> </form> </div> </div> </div> <!-- 初始化滑块验证插件 --> <script> $(function() { $('#slider').slider({ formatter: function(value) { return '当前值: ' + value; } }); }); </script> </body> </html> ``` 上述代码中,我们使用了Bootstrap的样式文件、JavaScript文件和滑块验证插件,以及jQuery库。在`<form>`标签中,我们添加了一个滑块输入框和一个提交按钮。滑块输入框使用了`data-`属性来配置滑块的各种参数,如最小值、最大值、步长、初始值等。我们还通过`data-slider-ticks`和`data-slider-ticks-labels`属性来设置滑块上的刻度和标签。 在JavaScript代码中,我们通过`$('#slider').slider()`方法来初始化滑块验证插件,并为滑块添加了一个`formatter`函数,用于在滑块上显示当前值。最后,我们将这段代码放在`$(function() { ... })`中,以确保在页面加载完毕后再执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值