前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某新闻资讯站点参数 _signature 逻辑分析 (无代码)

Python 爬虫进阶必备 | 某新闻资讯站点参数 _signature 逻辑分析 (无代码)

作者头像
咸鱼学Python
发布2022-03-29 17:32:11
9150
发布2022-03-29 17:32:11
举报
文章被收录于专栏:咸鱼学Python

今日网站

aHR0cHM6Ly93d3cudG91dGlhby5jb20v

不会吧,不会吧,不会有人还不会头条的sign

抓包分析与加密定位

打开网页,随便找到一个栏目,向下滑动可以抓到以下的请求包

这里提交的参数里就有我们需要分析的参数_signature

现在直接搜索_signature,就可以直接定位到相关的位置了

在这个文件中再次搜索,就可以看到如下代码

这里的r就是我们需要获取到的_signature

加密分析

先打上断点,可以看到,当代码运行到n的时候,还没有生成_signature

当继续向下运行到r的时候就返回_signature的值了,所以上面那一大坨的代码里面只有S的逻辑才是我们需要的

进入S中再次分析

这里可以看到传入的参数只和url有关,o以上的代码都很简单就是对url进行拼接的操作而已,但是最后返回的o等于一大长串

继续看o的逻辑

代码语言:javascript
复制
var o = (null === (n = window.byted_acrawler) || void 0 === n ? void 0 : null === (r = n.sign) || void 0 === r ? void 0 : r.call(n, i))

看这个逻辑之前,需要有几个关于 js 的姿势储备

1、===,这个的意思就是判断三等号左右两端的值和类型是否相等,只有值和类型都相等才为true

2、value = 条件?值1:值2,这个是当前面的条件判断为true时,赋值值1,为false时返回值2

3、||, 或的逻辑运算符,参与运算的任意一个参数为 true,返回的结果就为 true,否则返回 false

了解了上面的几个 js 知识之后,现在再来看o

首先null === (n = window.byted_acrawler)肯定是不相等的,所以这个时候o可简写为

代码语言:javascript
复制
var o = (false || void 0 === n ? void 0 : null === (r = n.sign) || void 0 === r ? void 0 : r.call(n, i))

之后void 0 === n肯定也是不相等的结果为 false,所以void 0 === n ? void 0 : null === (r = n.sign)返回的是null === (r = n.sign),同时null === (r = n.sign)也是不相等的,这个时候o可简写为

代码语言:javascript
复制
var o = (false || false || void 0 === r ? void 0 : r.call(n, i))

同样的void 0 === r的结果是false,返回的是r.call(n, i),这个时候o可简写为

代码语言:javascript
复制
var o = (false || false || r.call(n, i))

这个时候的逻辑运算结果var o = r.call(n, i)

这里的nwindow.byted_acrawler,这里的i是上面拼接好的urlrn.sign也就是window.byted_acrawler.sign

代码语言:javascript
复制
var i = {
    url: a + e
};

所以o就是window.byted_acrawler.sign.call(window.byted_acrawler,url),简化的结果就是window.byted_acrawler.sign(url)

现在就是jsvmp了,反正我干不出来,补环境直接冲就是了

这个js放到html就能直接用

就是有点短,不过用来请求问题不大

如果要用node直接运行,肯定会报错的,因为node少浏览器环境,这个大家应该都知道

这里提供两个方案

1、jsdom,这个不会补环境的朋友应该没少用吧,npm instal jsdom,就可以安装了,然后按照运行报错缺啥补啥就行了

2、这个可以参考补环境的课程,用 vm2 补

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抓包分析与加密定位
  • 加密分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档