首先打开DevTools,点击上方Fetch/XHR,找到我们需要的请求,发现数据返回的数据是加密的。
再查看请求标头,在这个里可以清楚的看到,有一个cookie和uuid需要我们注意,然后多次刷新页面,再次查看新出现的请求标头中的cookie和uuid,会发现,多次刷新,结果都一样,可以直接在请求标中带入。
接着查看载荷,发现只有一个sign参数,长度为32位,疑似md5加密,再查看之前的多次请求中的载荷sign值,发现是一样的,那么就可以直接带上,不用思考如何加密获取。
为了能够获取明文数据,需要找到js中进行解密的代码,在全局搜索decrypt。
依次点击之后,在相应的地方打上断点,进行刷新调试,就会找到解密数据的js代码,获取响应的明文数据,而在整个dataFilter函数就是我们需要的js代码,将其扣下来,并进行修改。
将鼠标依次放在所需要获取参数上面,发现e就是发送请求后获取的数据,t 在函数中并没有用到,且查看其值也会发现是undefined,可以直接忽略,n.lastFetchTime为时间戳。
然后查看函数中调用的函数,,先查看Vm.parse,接着跳转到相应的函数中,跳转之后,会发现函数在一个自执行函数中,将此自执行函数扣下来,在本地编译器环境运行。
本地运行编译之后,会发现报出来一个错误,在网页js中找到相应的代码,并补上,运行之后,会发现报出错误,rt未定义,需要在代码中补上 rt={},然后报出Vm未定义,这个时候需要在最开始定义一个变量,然后在自执行的代码中将要运行的函数进行赋值给自定义的变量进行导出函数。
运行完代码后,就会发现报出新的问题,重复之前的步骤,将所缺的代码进行扣下来。
最后的扣取完成的代码结果。
运行代码就可以得到明文数据,再自己构造python代码,就可以直接获取数据并保存在本地。