这两天帮朋友爬抖音的评论,爬的时间长了cookie失效导致从接口返回不到数据,故尝试模拟登录抖音进行爬虫记录一下。
首先抓包

输入错误的密码点击登录,找到请求接口。
查看请求数据,发现输入的账号和密码已被加密

通过请求数据,搜索关键字“password”
通过分析找到疑似加密函数
打个断点,重新点击登录

可以发现在这里确实停住了,此时显示的账号密码是明文,还没有被加密,单步执行后发现执行完accountLoginV2函数后账号密码会被加密,继续单步进入accountLoginV2函数内部,发现加密是在z函数中实现

先看一下z函数的实现

z函数接受两个参数,第一个参数是P函数的返回结果,第二个参数是固定的,知道了加密函数,加密参数,下一步就是补环境,将z函数复制到本地并手动补充各参数
首先要成功运行z函数,那么就得通过P函数,查看P函数的实现,发现是assign方法

开始本地构造

尝试运行,发现w未定义,是z函数中调用了w函数,那么继续找到w函数补在本地

w函数很简单

补完环境继续运行,发现Y函数未定义,继续找到函数补在本地。
补完环境后,尝试运行,运行成功,与之前请求的内容一样。

剩下的就用execjs运行这段js,配置好请求头,就可以用python模拟登录啦。
完结!