今日头条爬虫,signature、as、cp 参数破解, 详情页

    技术2022-07-11  147

    前言:最近为了学习头条的加密代码,自己对signature as cp 的生成过程进行了研究和学习。

    ——————2020-9-17更新———————— toutiao又更新了接口 原来的接口,变成了右面的列表,参数也发生了变化

    2020-9-17更新

    js中生成signature的代码也发生了变化,但是原来的逻辑,生成的signature还是可以使用的,只是携带的参数变了而已。 关于新的sign函数的构造,先占个坑,使用原来的逻辑也可以,有时间在更新。

    一、接口的寻找

    1.目的是为了获取头条号用户的文章数据,要访问的是这个页面 https://www.toutiao.com/c/user/104246645773/ 2.进行抓包分析 发现这个是我们需要的数据 3.对接口进行分析,发现是get请求,需要带下面几个参数

    二、as, cp 参数的破解
    分析as cp 的生成过程 全局搜索 as: 或者cp: 点击去对JS格式化后,文件中搜索as: 发现下面,生成as cp的代码
    三、signature 参数的破解

    1.全局搜索signature关键字 2.signature 参数是由 utils.tacSign() 生成的,你可以去构造utils对象,或者去分析tacSign方法 3.打断点调试,进入到tacSign方法里面 4.对tacSign 打断点调试,发现传入的两个参数e 是url的前缀,t是get请求的参数,构造出来一个o对象 5.调用window.byted_acrawler.sign(o) 生成了秘钥signature,现在关键是对sign这个方法进行破解 6.在console中输入window.byted_acrawler.sign 在vm中找到sign的执行函数 7.把这个TAC function全部复制出来, 8.我们把构造好的o对象用 window.byted_acrawler.sign(o)去执行,就生成了signature 9.用node执行JS的时候会各种报错,我们添加上一些windows或者document对象的属性,在里面添加navigator location 和body和cookie属性 10.会生成这样一个链接,拿个这个链接携带cookie就可以获取到内容了 11.signature 还有一种是比较长的,长sign不用携带cookie可以直接获取数据,长signature的获取先需要执行 页面中的一段JS代码,初始化一下,用纯JS执行的时候会报错缺少属性,会对浏览器特征进行检测。

    四、请求cookie寻找
    短连接请求的时候要携带cookie,这个cookie可以用selenium随便访问一个头条用户链接,cookie的失效时间很长,基本不用更换
    五、获取到文章的标识media_id
    解析出文章的唯一标识拼接成详情页的链接 https://www.toutiao.com/i6824408619564401163/
    六、文章详情页接口的破解(__ac_nonce, __ac_signature)加密
    通过抓包工具抓包发现,没有cookie访问详情页链接的时候,会返回下面一段代码,从cookie中获取__ac_nonce 使用ac_nonce 生成 __ac_signature 使用selenium 访问详情页获取到这一对cookie,失效时间是半个小时左右,携带这对cookie成功获取到详情页 -内容在页面的源代码里,用正则解析

    如果对采集方案感兴趣或者对JS加密有兴趣的,可以加我qq: 330446875 学习交流(注明:头条爬虫)

    Processed: 0.011, SQL: 9