今日头条爬虫,signature、as、cp 参数破解, 详情页__ac_nonce和__ac_signature加密

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

一、接口的寻找

1.目的是为了获取头条号用户的文章数据,要访问的是这个页面
https://www.toutiao.com/c/user/104246645773/
2.进行抓包分析
发现这个是我们需要的数据
今日头条爬虫,signature、as、cp 参数破解, 详情页__ac_nonce和__ac_signature加密_第1张图片
3.对接口进行分析,发现是get请求,需要带下面几个参数
今日头条爬虫,signature、as、cp 参数破解, 详情页__ac_nonce和__ac_signature加密_第2张图片

二、as, cp 参数的破解
  1. 分析as cp 的生成过程
    全局搜索 as: 或者cp:
    今日头条爬虫,signature、as、cp 参数破解, 详情页__ac_nonce和__ac_signature加密_第3张图片
  2. 点击去对JS格式化后,文件中搜索as: 发现下面,生成as cp的代码
    今日头条爬虫,signature、as、cp 参数破解, 详情页__ac_nonce和__ac_signature加密_第4张图片
三、signature 参数的破解

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

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

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

你可能感兴趣的:(爬虫,python,JavaScript)