精华内容
下载资源
问答
  • 抖音xgorgon及设备参数生成算法

    万次阅读 热门讨论 2019-11-11 18:57:34
    目录抖音xgorgon算法分析java层相关代码SO 层代码抖音设备参数生成算法分析Java层签名相关入口解决方案免责声明 抖音xgorgon算法分析 java层相关代码 该函数的参数,经过xposed hook打印如下: arg0=...

    抖音xgorgon算法分析

    java层相关代码

    在这里插入图片描述
    该函数的参数,经过xposed hook打印如下:

    arg0=https://aweme-eagle.snssdk.com/aweme/v1/feed/?type=0&max_cursor=0&min_cursor=0&count=6&volume=0.0&pull_type=0&need_relieve_aweme=0&ts=1569139730&app_type=lite&os_api=25&device_platform=android&device_type=Redmi%205A&iid=86972354596&ssmix=a&manifest_version_code=180&dpi=320&uuid=868028030408902&version_code=180&app_name=aweme&version_name=1.8.0&openudid=d727ef1328c8469e&device_id=47737739781&resolution=720*1280&os_version=7.1.2&language=zh&device_brand=Xiaomi&ac=wifi&update_version_code=1800&aid=1128&channel=douyin_huitou_and13&_rticket=1569139731076&as=aad07cfa185d872c13d07c&cp=fa68d07cfa18d07cfa6030&mas=01199323b3b959f9d33319b9b985de0bf7f9d33319f3b3f973d323
    arg1={x-ss-tc=[0], cookie=[qh[360]=1; odin_tt=82b9ba91abcf2b3e9685195c095bfe8ae538e25abae8210ffbaf9adfd2dd8e4e65e89a5bf21be9b8591ca6786280ccb9], accept-encoding=[gzip], user-agent=[com.ss.android.ugc.aweme/800 (Linux; U; Android 7.1.2; zh_CN; Redmi 5A; Build/N2G47H; Cronet/58.0.2991.0)], x-ss-req-ticket=[1569139731068]}
    

    可看出:

    参数1为url的完整地址 包含请求参数
    参数2为header信息
    

    签名返回值

    {X-Gorgon=034c124d000135224fe272bdf75f1c39cb9bd5e2ff04ee9b5577, X-Khronos=1569139731}
    

    可看出返回X-Gorgon 与 X-Khronos 参数, 然后追加到请求头中进行请求

    SO 层代码

    leviathan函数 在 libcms.so里面的,有兴趣的同学可以用IDA查看

    抖音设备参数生成算法分析

    Java层签名相关入口

    在这里插入图片描述

    解决方案

    为了使用方便,我搞了个http的本地服务,已经打包成可执行文件,并提供了如下接口

    在这里插入图片描述
    软件下载地址:

    • mac端本地服务: https://zbkj-service.oss-cn-beijing.aliyuncs.com/douyin_service_mac
    • PC端本地服务:https://zbkj-service.oss-cn-beijing.aliyuncs.com/douyin_service_win.exe
    • linux端本地服务:https://zbkj-service.oss-cn-beijing.aliyuncs.com/douyin_service_linux
    • 配置文件:https://zbkj-service.oss-cn-beijing.aliyuncs.com/config.yaml

    说明:

    三个本地服务按需下载
    配置文件需与本地服务执行文件放同一目录

    运行方式

    douyin_service_mac 运行方式:

    1. 授权 chmod +x douyin_service_mac
    2. 双击启动
    

    douyin_service_linux 运行方式:

    ./douyin_service_linux 
    

    douyin_service_win.exe 运行方式:

    直接双击
    

    免责声明

    1. 请勿使用本服务于商用
    2. 请勿使用本服务大量抓取
    3. 若因使用本服务与抖音官方造成不必要的纠纷,本人盖不负责

    我也不知道这个东西有没有法律风险,存粹技术爱好,若侵犯抖音贵公司的权益,请告知

    展开全文
  • 抖音xgorgon结果获取

    千次阅读 2020-04-02 15:49:29
    抖音xgorgon算法分析 抖音xgorgon算法确实不错的机制,对于反爬有很大的作用 通过url的完整地址获取签名返回值,{X-Gorgon=******, X-Khronos=*****} 解决方案 需要一台windos计算机(能开机的windos都可以哦),一...

    抖音xgorgon算法分析

    抖音xgorgon算法确实不错的机制,对于反爬有很大的作用
    通过url的完整地址获取签名返回值,{X-Gorgon=******, X-Khronos=*****}
    

    解决方案

    需要一台windos计算机(能开机的windos都可以哦),一个模拟器,python环境搭建
    简单的测试了下并发10次,每个并发10000,共请求10w次消耗时间960s,未发生报错,这只是针对个人手机操作,不对抖音家进行任何请求,所以未侵犯抖音贵公司权益,请告知。
    

    在这里插入图片描述
    目前搭建的远程服务是GRPC,也可以是任何Web,可以提供API接口,客户端支持各种平台
    访问形如 IP:PORT/gorgon?url=https://aweme-****
    返回结果:{‘id’: ‘***’, ‘X-Gorgon’: ‘03006cc04001ca7d8472cc24affcbb5fee1f415902cc2109a7aa’, ‘X-Khronos’: ‘1585809571’}

    感兴趣的小伙伴

    存粹技术爱好,技术无界,欢迎一起来学习哦
    加V:
    加QQ:1729362897

    免责声明

    请勿使用本服务于商用
    请勿使用本服务大量抓取
    若因使用本服务与抖音官方造成不必要的纠纷,本人盖不负责
    我也不知道这个东西有没有法律风险,存粹技术爱好,若侵犯抖音贵公司的权益,请告知

    展开全文
  • 抖音xgorgon算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换。 X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是...

    短视频、直播数据服务,请查看文档: TiToData
    免责声明:本文档仅供学习与参考,请勿用于非法用途!否则一切后果自负。
    文章来源于互联网,非原创,若侵权,请私信联系我们处理。

    抖音xgorgon算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换。

    X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是url,X-Khronos,X-SS-STUB参与接口加密,有些则是所有都进行接口加密。

    概述

    抖音版本里面加了好几个算法,有as,cp(早期就这两个),mas,X-Gorgon,X-SS-STUB,X-Khronos算法,很多关键key之间有相互关联,只要有一个环节算错了,就会请求不到数据。目前版本的抖音加了很多的验证,及代码混淆,难度偏大。

    初探

    抖音的签名算法在libcms.so中,在JNI_Onload中动态注册jni函数。
    算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换
    主要用到一些逆向工具IDA,Xposed框架

    研究

    8.0版本之后的算法主要是X-Gorgon和X-SS-STUB.之后经过抓包抖音接口,查看Java层,so层代码,分析如下原理。

    • X-SS-STUB是post请求时body部分的md5值,但是在为空的情况下,有时候不参与加密,有时候参与加密,具体接口需要具体分析
    • X-Khronos比较简单就是一个unix时间戳
    • X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是url,X-Khronos,X-SS-STUB参与接口加密,有些则是所有都进行接口加密。具体接口具体分析

    分析

    今天有空分享一下抖音的加密算法,作为拥有庞大用户量的APP,其通信协议加密的强度肯定是不弱的,关键算法被VM,只能动态分析去理解。我们通过抓包分析,请求的URL上带有AS、CP两个加密字段,这两个字段是早期版本算法,后又陆续添加了MAS、X-GORGON算法。我们今天先对AS、CP两个字段进行分析,这个只能通过动态调试去跟踪加密过程。
    首先我们通过工具调试定位到函数

    - [IESAntiSpam testForAlert:msg:]
    

    定位的详细过程忽略……,进入继续调试后发现调用SUB_102E3345函数进行加密排序
    1.整理分析流程

     
    1.时间戳转十六进制
     
    2.将时间戳排序俩次,
      a1 v3 是排序key
      sprintf(byte_102323F30, "%08x", a1);
      sprintf(byte_102323F3A, "%08x", v3);
     
    3.将url参数用MD5加密一次或俩次根据时间戳&运算
     
    4.将第一次排序结果写入前16位地址加一写入(从1插入),隔一位插入,前边拼a1
     
    5.将第二次排序结果写入后16位(从0插入)后边拼e1
     
    

    2.结果排序

    a1d5b43se234dccea7
     
    456dcd5s2320cf3e1
     
    &cp=456fcd5s2320cfs3e1&as=a1d5b43se234dccea7
     
    拼接完成后就可以请求了
    

    后期版本添加了mas算法和最新的X-gorgon算法,目前最新系列版本算法如果需要了解的话可以交流。
    3.流程详述
    image.png

    那么我们就能够更加确信header里的x-gorgon对它进行了一次签名,所以我们直接jadx上手阅读一波反编译后的代码,这里我直接搜索了x-gorgon关键字,列出了以下结果:
    那么我们就能够更加确信header里的x-gorgon对它进行了一次签名,所以我们直接jadx上手阅读一波反编译后的代码,这里我直接搜索了x-gorgon关键字,列出了以下结果:

    这里我选择了hashMap.put(“X-Gorgon”, a3);这一行,跳转进去我们来分析一下它的代码
    这里我们看到有一个它的值是来自a3,a3则是通过String a3 = a.a(com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6)));这行代码进行获取到的结果,我们看到它传了4个参数,我们来仔细看一下这4个参数具体都是什么内容:
    a2来源:
    String b2 = tt.d(str);
    d.a(b2);
    str它就是该方法传进来的参数,我们后面可以通过hook方式来获取它的具体内容,而它会执行tt.d()、d.a() 进行2次操作,我们对其tt.d()跟进去
    image.png


    我们看到它对这个字符串进行了取 ? 和 # 中间值,怀疑是url,如果是url证明它只是取了url后面的参数,那么继续看它的下一个方法:d.a()
    我们看到这里就是进行了MD5签名取值,那么a2分析到此结束,我们继续分析第2个参数
    image.png


    **str4来源:
    **这里非常简单,它就是枚举传进来的第二个参数map,判断如果有X-SS-STUB这个值的话就获取,反之则填充32个0,那么我们抓包发现并没有X-SS-STUB这个参数,实际上如果我们的包是POST的话它就会有,实际上它就是POST数据的一个MD5签名值。
    str5来源:
    str5也非常简单,也是枚举map里面有没有COOKIE,如果有就把COOKIE进行MD5,那么该参数也到此结束了
    str6来源:

    String c2 = tt.e(str3);
    if (c2 != null && c2.length() > 0) {
         str6 = d.a(c2);
         StcSDKFactory.getInstance().setSession(c2);
    }
    
        这里我们记得str3是cookie,它执行了tt.e(str3) 方法获取一个返回值,如果它不是空同样给这个返回值md5,那么我们跟进去看一下它是做了什么处理:<br />        这里我们看到它是枚举了cookie里面有没有sessionid这个值,如果有就取出来,那么str6到此结束<br />        **参数整理:**<br />            a2 = md5(url) 疑似对网址的参数进行md5<br />            str4 = x-ss-stub,只有post时才有效,否则是32个0<br />            str5 = md5(cookie)  对cookie进行md5<br />            str6 = md5(cookie['sessionid'])    对cookie里面对sessionid进行md5,否则也是32个0<br />        我们整理完了这4条参数后,继续分析,它将这4个参数进行了字符串合并,接着执行 a.a(a2+str4+str5+str6),我们跟进去看看里面做了什么操作<br />        我们看到它这里循环了总长度/2次,每次都是把  str[i] 转换成十进制左移4,然后加上 str[i+1] 都一个简单运算,并返回结果,也就是本来是4个32位(128位)然后经过加密后缩短成了64位长度。最后它执行了com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6))进行计算,我们看到它还传了2个参数,i和currentTimeMillis,我们往前可以看到 i是-1,而currentTimeMillis是当前都十位时间戳。<br />    ![image.png](https://img-blog.csdnimg.cn/img_convert/fc2aa89f8ddc9415d7098216b2c99db6.png#align=left&display=inline&height=209&margin=[object Object]&name=image.png&originHeight=418&originWidth=908&size=96354&status=done&style=none&width=454)<br />        最后把计算好都byteArray经过位移转换成了string类型,并put到map里面,那么我们也清楚到看到,k-khronos也就是刚刚到currentTimeMillis时间戳了。我们发现由于om.ss.sys.ces.a.leviathan是在so层到libcms.so文件,并且里面有大量到混淆就没有再度分析。我们可以通过xposed或者unidbg到方法进行调用。<br />![image.png](https://img-blog.csdnimg.cn/img_convert/5e8aec90da44ab0f3812a6ff3659f643.png#align=left&display=inline&height=482&margin=[object Object]&name=image.png&originHeight=964&originWidth=2134&size=182979&status=done&style=none&width=1067)
    

    0x02:参数确认

    ** ** 这里我们分析完了它算法到具体参数构造完成后,我们还需要确认它传到参数是否是我们所联想到,那么这里我们发现由于它这个方法是一个callback,我们往前跟一下,寻找一个合适到hook点,使用frida进行hook
    image.png
    这里我对它进行了调用查找,看到只有1个地方,我们跟进去看看,跟进去之后它就是以下内容,就只是一个简单对赋值给sAddSecurityFactorProcessCallback,我们在对它进行调用查找,看看是什么地方对它进行对调用。

    public static void setAddSecurityFactorProcessCallback(a aVar) {
    sAddSecurityFactorProcessCallback = aVar;
    }


    这里我们看到它从这里取的回调指针变量,然后判断如果不为null则执行,那么我们就可以直接hook这个方法:tryAddSecurityFactor$twin,这里我的hook代码也就比较简单,直接输出它传进去的map和str的值以及返回的map进行确认。

    //frida -U com.ss.android.ugc.aweme -l test.js
    Java.perform(function() {
        var NetworkParams = Java.use("com.bytedance.frameworks.baselib.network.http.NetworkParams");
        NetworkParams['tryAddSecurityFactor$___twin___'].implementation = function(str,map){
        var keyset = map.keySet();
        var it = keyset.iterator();
        console.log("str:\t"+str)
        while(it.hasNext()){
            var keystr = it.next().toString();
            var valuestr = map.get(keystr).toString()
            console.log("map:\t"+keystr+"\t"+valuestr)
        }
        var ret
        ret = this.tryAddSecurityFactor$___twin___(str,map);
        var keyset = ret.keySet();
        var it = keyset.iterator();
        while(it.hasNext()){
            var keystr = it.next().toString();
            var valuestr = ret.get(keystr).toString()
            console.log("ret map:\t"+keystr+"\t"+valuestr)
        }
        return ret;
        }
    });
    

    绿色部分就是str参数1的值,黄色则是map,蓝色则是返回的map,我们看下charles的这个包的header里的xgorgon是不是返回的值。


    3.总结:

    以上就是对抖音对一个简单的x-gorgon的分析笔记过程,希望能够有所帮助,也能够对自身的产品安全方面进行一个参考借鉴。


    展开全文
  • 抖音xgorgon算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换。 X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是url...

    抖音xgorgon算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换。
    X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是url,X-Khronos,X-SS-STUB参与接口加密,有些则是所有都进行接口加密。

     

    概述

    抖音版本里面加了好几个算法,有as,cp(早期就这两个),mas,X-Gorgon,X-SS-STUB,X-Khronos算法,很多关键key之间有相互关联,只要有一个环节算错了,就会请求不到数据。目前版本的抖音加了很多的验证,及代码混淆,难度偏大。

    初探

    抖音的签名算法在libcms.so中,在JNI_Onload中动态注册jni函数。

    算法用ollvm混淆了,主要是流程平坦化,流程混淆和运算替换

    主要用到一些逆向工具IDA,Xposed框架

    研究

    8.0版本之后的算法主要是X-Gorgon和X-SS-STUB.之后经过抓包抖音接口,查看Java层,so层代码,分析如下原理。

    • X-SS-STUB是post请求时body部分的md5值,但是在为空的情况下,有时候不参与加密,有时候参与加密,具体接口需要具体分析

    • X-Khronos比较简单就是一个unix时间戳

    • X-Gorgon是对cookie,X-SS-STUB,X-Khronos,Url进行混合加密之后的参数。这里也区分情况,有些接口只有url和X-Khronos参与接口加密,有些是url,X-Khronos,X-SS-STUB参与接口加密,有些则是所有都进行接口加密。具体接口具体分析

    分析

    今天有空分享一下抖音的加密算法,作为拥有庞大用户量的APP,其通信协议加密的强度肯定是不弱的,关键算法被VM,只能动态分析去理解。我们通过抓包分析,请求的URL上带有AS、CP两个加密字段,这两个字段是早期版本算法,后又陆续添加了MAS、X-GORGON算法。我们今天先对AS、CP两个字段进行分析,这个只能通过动态调试去跟踪加密过程。

    首先我们通过工具调试定位到函数

    - [IESAntiSpam testForAlert:msg:]
    

    定位的详细过程忽略……,进入继续调试后发现调用SUB_102E3345函数进行加密排序

    1.整理分析流程

     
    1.时间戳转十六进制
     
    2.将时间戳排序俩次,
      a1 v3 是排序key
      sprintf(byte_102323F30, "%08x", a1);
      sprintf(byte_102323F3A, "%08x", v3);
     
    3.将url参数用MD5加密一次或俩次根据时间戳&运算
     
    4.将第一次排序结果写入前16位地址加一写入(从1插入),隔一位插入,前边拼a1
     
    5.将第二次排序结果写入后16位(从0插入)后边拼e1
     
     

    2.结果排序

    a1d5b43se234dccea7
     
    456dcd5s2320cf3e1
     
    &cp=456fcd5s2320cfs3e1&as=a1d5b43se234dccea7
     
    拼接完成后就可以请求了

    后期版本添加了mas算法和最新的X-gorgon算法,目前最新系列版本算法如果需要了解的话可以交流。

    3.流程详述

    那么我们就能够更加确信header里的x-gorgon对它进行了一次签名,所以我们直接jadx上手阅读一波反编译后的代码,这里我直接搜索了x-gorgon关键字,列出了以下结果:

    那么我们就能够更加确信header里的x-gorgon对它进行了一次签名,所以我们直接jadx上手阅读一波反编译后的代码,这里我直接搜索了x-gorgon关键字,列出了以下结果:

    这里我选择了hashMap.put("X-Gorgon", a3);这一行,跳转进去我们来分析一下它的代码

            这里我们看到有一个它的值是来自a3,a3则是通过String a3 = a.a(com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6)));这行代码进行获取到的结果,我们看到它传了4个参数,我们来仔细看一下这4个参数具体都是什么内容:

            a2来源:

                String b2 = tt.d(str);

                d.a(b2);

            str它就是该方法传进来的参数,我们后面可以通过hook方式来获取它的具体内容,而它会执行tt.d()、d.a() 进行2次操作,我们对其tt.d()跟进去

            

            我们看到它对这个字符串进行了取 ? 和 # 中间值,怀疑是url,如果是url证明它只是取了url后面的参数,那么继续看它的下一个方法:d.a() 

            我们看到这里就是进行了MD5签名取值,那么a2分析到此结束,我们继续分析第2个参数

            str4来源: 

          这里非常简单,它就是枚举传进来的第二个参数map,判断如果有X-SS-STUB这个值的话就获取,反之则填充32个0,那么我们抓包发现并没有X-SS-STUB这个参数,实际上如果我们的包是POST的话它就会有,实际上它就是POST数据的一个MD5签名值。

            str5来源:

    str5也非常简单,也是枚举map里面有没有COOKIE,如果有就把COOKIE进行MD5,那么该参数也到此结束了

            str6来源:

    String c2 = tt.e(str3);
    if (c2 != null && c2.length() > 0) {
         str6 = d.a(c2);
         StcSDKFactory.getInstance().setSession(c2);
    }

            这里我们记得str3是cookie,它执行了tt.e(str3) 方法获取一个返回值,如果它不是空同样给这个返回值md5,那么我们跟进去看一下它是做了什么处理:

            这里我们看到它是枚举了cookie里面有没有sessionid这个值,如果有就取出来,那么str6到此结束

            参数整理:

                a2 = md5(url) 疑似对网址的参数进行md5

                str4 = x-ss-stub,只有post时才有效,否则是32个0

                str5 = md5(cookie)  对cookie进行md5

                str6 = md5(cookie['sessionid'])    对cookie里面对sessionid进行md5,否则也是32个0

            我们整理完了这4条参数后,继续分析,它将这4个参数进行了字符串合并,接着执行 a.a(a2+str4+str5+str6),我们跟进去看看里面做了什么操作

            我们看到它这里循环了总长度/2次,每次都是把  str[i] 转换成十进制左移4,然后加上 str[i+1] 都一个简单运算,并返回结果,也就是本来是4个32位(128位)然后经过加密后缩短成了64位长度。最后它执行了com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6))进行计算,我们看到它还传了2个参数,i和currentTimeMillis,我们往前可以看到 i是-1,而currentTimeMillis是当前都十位时间戳。

        

            最后把计算好都byteArray经过位移转换成了string类型,并put到map里面,那么我们也清楚到看到,k-khronos也就是刚刚到currentTimeMillis时间戳了。我们发现由于om.ss.sys.ces.a.leviathan是在so层到libcms.so文件,并且里面有大量到混淆就没有再度分析。我们可以通过xposed或者unidbg到方法进行调用。

    0x02:参数确认

            这里我们分析完了它算法到具体参数构造完成后,我们还需要确认它传到参数是否是我们所联想到,那么这里我们发现由于它这个方法是一个callback,我们往前跟一下,寻找一个合适到hook点,使用frida进行hook

            

            这里我对它进行了调用查找,看到只有1个地方,我们跟进去看看,跟进去之后它就是以下内容,就只是一个简单对赋值给sAddSecurityFactorProcessCallback,我们在对它进行调用查找,看看是什么地方对它进行对调用。

     public static void setAddSecurityFactorProcessCallback(a aVar) {

            sAddSecurityFactorProcessCallback = aVar;

        }    

     

     

     

        这里我们看到它从这里取的回调指针变量,然后判断如果不为null则执行,那么我们就可以直接hook这个方法:tryAddSecurityFactor$___twin___,这里我的hook代码也就比较简单,直接输出它传进去的map和str的值以及返回的map进行确认。

    //frida -U com.ss.android.ugc.aweme -l test.js
    Java.perform(function() {
        var NetworkParams = Java.use("com.bytedance.frameworks.baselib.network.http.NetworkParams");
        NetworkParams['tryAddSecurityFactor$___twin___'].implementation = function(str,map){
        var keyset = map.keySet();
        var it = keyset.iterator();
        console.log("str:\t"+str)
        while(it.hasNext()){
            var keystr = it.next().toString();
            var valuestr = map.get(keystr).toString()
            console.log("map:\t"+keystr+"\t"+valuestr)
        }
        var ret
        ret = this.tryAddSecurityFactor$___twin___(str,map);
        var keyset = ret.keySet();
        var it = keyset.iterator();
        while(it.hasNext()){
            var keystr = it.next().toString();
            var valuestr = ret.get(keystr).toString()
            console.log("ret map:\t"+keystr+"\t"+valuestr)
        }
        return ret;
        }
    });

     

    绿色部分就是str参数1的值,黄色则是map,蓝色则是返回的map,我们看下charles的这个包的header里的xgorgon是不是返回的值。

    3.总结:

    以上就是对抖音对一个简单的x-gorgon的分析笔记过程,希望能够有所帮助,也能够对自身的产品安全方面进行一个参考借鉴。

    4.免责声明

    请勿使用本服务于商用或大量抓取
    若因使用本服务与抖音官方造成不必要的纠纷,本人盖不负责,存粹技术爱好,若侵犯抖音贵公司的权益,请告知!

    5.技术交流

    如果有什么不懂的可以联系我交流

    展开全文
  • 抖音XGorgon04.java算法

    2021-02-20 18:51:36
    某音XGorgon0401Java版本源代码算法!
  • 抖音xgorgon(0401)

    千次阅读 多人点赞 2020-07-16 17:17:06
    下载完apk之后,使用AK反编译,可能需要升级apktools到2.3.4, ...在工程搜索中全局搜索 x-gorgon,并打开查看 localHashMap.put(“X-Gorgon”, com.ss.a.b.a.c(com.ss.sys.ces.a.leviathan(i, com.ss.a
  • 抖音xgorgon算法

    2020-08-30 17:30:10
    xgorgon算法        由于此算法本人对破解的方式不是很满意,所以不做任何具体分析,仅提供下图:        如果你想要具体的流程分析,抱歉...
  • 抖音xgorgon算法是核心算法,基本每一个接口都需要用到,为什么说基本呢,因为有些如直播弹幕、私信协议是可以不用这个算法的。03版的算法算是一个老算法了,从5版本开始到9版本都是用的03版的算法,算法一直可用,...
  • 因为php是十分流行的web编程语言,因此用php写了一个抓取抖音用户数据的程序。 调用接口: http://jianhaozhan.cn/getDyCom.php?aweme_id=6816607819614145804&cursor=20 aweme_id=6816607819614145804,这个是不同...
  • 一、反编译APK(Xgorgon) 1、jadx打开apk并搜索xgorgon,可定位到init_gorgon 2、读init_gorgon()里面的伪代码,你会发现最新版在调用native前所进行的一系列操作,和老版本无二,那就按照老版本操作即可
  • 一、反编译APK(Xgorgon) 1、jadx打开apk并搜索xgorgon,可定位到init_gorgon 2、读init_gorgon()里面的伪代码,你会发现最新版在调用native前所进行的一系列操作,和老版本无二,那就按...
  • 最近经常有朋友向我寻要X-gorgon算法的代码,不要问我是谁?请叫我雷锋。这里只公布python版本的哈,java版本的,感兴趣的朋友可以自己翻译过来,也希望大家有什么好东西能和我一起分享。 这个算法在国外有人出价...
  • 抖音X-Gorgon

    千次阅读 2021-05-25 09:53:26
    X-GorgonX-Khronos算法生成 交流v:Code_Lee
  • 抖音 x-gorgon 03 免费生成接口 抖音6.3.0版本 最近老板让爬取一下抖音数据,最近版本的总是抓不到包,所以我就选择使用旧版本的抖音app,通过分析抖音数据请求包,我们发现其中最难拿到的就是 “X-Gorgon”值: ...
  • 抖音X_Gorgon

    千次阅读 2020-06-19 20:00:04
    最近有人让我爬一下抖音,算法做出来了没有人要了,谁要联系一下。 爬取个性签名,视频,点赞,关注,都可以。 qq657589436
  • 抖音x-gorgon算法java版本,抖音爬虫核心技术

    千次阅读 热门讨论 2020-05-11 09:40:02
    前段时间发了个python版本的x-gorgon算法,很多朋友在问java版本的,今天正好有时间,就发布个吧。 不要问我是谁,请叫我雷锋。 先看效果: ...java版抖音x-gorgon算法: import org.apache.commons.lan
  • 新版本里面加了好几个算法,有X-GorgonX-SS-STUB,X-Khronos算法,很多关键key之间有相互关联,只要有一个环节算错了,就会请求不到数据。目前版本加了很多的验证,及代码混淆,难度偏大。 二、 8.0版本之后的算法...
  • 生成xgorgon04算法需调用so文件, libcms.so里 直接上代码 这里是调用封装好的服务, 生成xg0404算法, 返回的X-Khronos和X-Gorgon参数, 嵌套到数据接口里及可, 调用xg0404算法是不需要ck信息,直接可以嵌套到接口里...
  • 抖音是当下的一款主流的短视频app,反爬虫机制比较严格,本文章重在分析抖音数据采集的关键算法x-gorgon。 有了这个算法可以做什么?可以通过算法请求抖音接口获取用户信息,粉丝列表,用户作品列表,视频评论,视频搜索,...
  • 抖音X-Gorgon和X-Khronos参数获取(用户数据信息爬虫) 主要技术点:python3.7+frida+adb+模拟器 一.安装adb (1).什么是adb? 简单来说,ADB是来调试Android开发工具,ADB(Android Debug Bridge)是Android SDK中的一个...
  • 抖音X-Gorgon算法,实现视频列表信息获取 项目效果:在抖音搜索栏搜索关键字,获取视频相关数据(如:标题、用户、发布时间、视频、点赞等) 如:搜索"和平精英": 文件主要结构 ├─basic # 全局配置,主要包括...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

抖音xgorgon