JavaScriptPython大数据 爬虫Python AI Sql

某度登录js逆向

2021-07-04  本文已影响0人  Imjustatraveler

如有侵权,请联系我删除


1、引言

        本文章只做分析,不提供源码

2、分析

        首先看一下登录链接和需要什么参数

登录链接 参数1 参数2

好了,看login的参数初步我们需解决(token, password, rsakey, ds, tk, dv, fuid, sig, shaOne, rinfo)

参数太多了,我们一个一个参数进行分析(注:下面分析的参数返回值不一定和上图的一样,原因是我边调试边写文章)

2.1 token参数生成

token

token的参数需要解决的有(gid, sig, shaOne)

先看比较简单一点的gid是怎么生成的

全局搜索发现只有三个js出现gid

全局搜索gid

发现gid引用的是下图这个方法

gid生成

还是通过全局搜索方法找shaOne参数

sig和shaOne参数生成

好了,找到这我们验证下是否是在这个函数生成的,清除缓存强制刷新页面

和上图加密后的值一样,确定是从这个函数加密出来的

剩下的就是常规的操作了,一步一步扣代码就好了。

2.2 password参数生成

          再生成password参数之前先要找到rsakey是哪里生成的

rsakey rsakey

可以看出password就是rsa算法加密出来的

password加密

2.3  ds和tk参数生成

login的ds和tk

他是由viewlog接口返回的,现在我们看下viewlog接口需要什么参数,由下图看起来我们需要解决(as,fs, sb,tk)参数

可以看到as是由viewlog接口,那上一个viewlog是怎么有as的呢?现在我们清除缓存再刷新页面看看

as参数接口

发现只需传ak参数就可以获取as返回值,注:虽然这个接口也返回了ds和tk,但这两个值不是login接口的

我们先定位到生成viewlog参数的地方,全局搜索viewlog

然后我们看下sb参数是由o赋值的,json格式化一下

mv 好像是鼠标移动的像素点,cr好像是一些页面参数

rzData初始化的地方 sb参数生成的地方

找到sb参数生成的地方,代码我就不详细说了

而fs是由aes加密生成出来的,key是as加appspi0,values是sb

tk参数则是上一个viewlog返回值

ds和tk总结:

        1. 首先访问viewlog接口。参数ak=31a4dfdeb6509f5257bcac99b7be676a

         2. 再访问viewlog接口, 参数如下:

                as=上个viewlog接口返回的as

                fs=通过aes加密,key是as加appspi0,values是sb

                sb=鼠标移动的像素点,以及一些浏览器参数,详细请看sb参数生成的地方

                tk=上个viewlog接口返回的tk

2.4  dv参数生成

        通过全局搜索定位到dv赋值的地方,发现是window.LG_DV_ARG.dvjsInput进行赋值的

    再次通过全局搜索dvjsInput关键字,定位到生成的地方

 通过堆栈,找到e的参数生成

      

 后面就靠自己扣代码了

2.5  fuid 和rinfo参数生成

    通过fuid = 关键词找到fuid生成的地方

    

浏览器指纹

    总结,fuid参数:先生成浏览器指纹,通过aes加密,rinfo:将fuid参数传入_0x2ca40c函数进行加密

    如不知浏览器指纹是什么请自行百度

2.6  sig, shaOne

    请参考2.1   token生成,只是传入的参数不一样而已

3、Python代码

        

个别Python代码

4、测试

    

5、js转Python代码注意的点

        5.1  &,>>  需要通过ctypes.c_int库执行

         5.2  >>> 需要js2py第三方库进行转换

上一篇下一篇

猜你喜欢

热点阅读