小红书shield7.7参数分析

免责任声明:
任何可操作性的内容与本文无关,文章内容仅供参考学习,如有侵权, 损害贵公司利益,请联系作者,会立刻马上进行删除。

search_id,session_id用在搜索接口,这两个参数传递不对 一定会出现滑动验证码。
geo是经度纬度加密成字符串。

原文章转载于:https://blog.csdn.net/oyo775881/article/details/120107806

三个字段的加密算法都在java层,还是比较简单的。
先是search_id,session_id,这两个字段的生产算法是一致的,JADX位置看下图。
在这里插入图片描述
接着是geo,这个字段一开始以为是百度地图SDK自带的,后面在找了一下,也是java层计算得出,这个字段我并没有验证,看到算出来跟抓包的差不多一致应该没有问题,大家自行验证吧。

在这里插入图片描述
最后是算法还原,非常的简单。

search_id,session_id

private String getSearchId() {
    
    
        byte[] bArr = new byte[16];
        long currentTimeMillis = System.currentTimeMillis() & Long.MAX_VALUE;
        long random = ((long) (Math.random() * ((double) Long.MAX_VALUE))) & Long.MAX_VALUE;
        for (int i2 = 0; i2 <= 7; i2++) {
    
    
            int i3 = 56 - (i2 << 3);
            bArr[i2] = (byte) ((int) (currentTimeMillis >>> i3));
            bArr[i2 + 8] = (byte) ((int) (random >>> i3));
        }
        return new BigInteger(bArr).toString(36);
    }

geo

private String geo() {
    
    
        Locale locale = Locale.getDefault();
        String format = String.format(locale, "{\"latitude\":%f,\"longitude\":%f}", Arrays.copyOf(new Object[]{
    
    116.331398f, 39.897445f}, 2));
        Charset charset = Charsets.UTF_8;
        byte[] bytes = format.getBytes(charset);
        return Base64Utils.encodeToString(bytes);
    }

最后看下shield的python还原算法
在这里插入图片描述
有兴趣的私聊 扣扣: 519545433

猜你喜欢

转载自blog.csdn.net/weixin_38819889/article/details/120471118