前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某众点评 Web 加密参数 _token 逻辑分析

Python 爬虫进阶必备 | 某众点评 Web 加密参数 _token 逻辑分析

作者头像
咸鱼学Python
发布2021-07-16 11:17:10
5370
发布2021-07-16 11:17:10
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

今日网站

aHR0cHM6Ly93d3cuZGlhbnBpbmcuY29tL3Nob3AvRzNybjh4bEtUR2Q1c0JZeQ==

很久没有写 Js 逆向的技术文了,本来逻辑很清楚的文章磕磕绊绊的整的有点久

抓包分析与加密定位

没有登陆的某点评可以看到的信息不多,不过不妨碍我们研究探讨他的加密

打开的网页,直接找到下面这个请求

右边框选出来的就是要分析的加密参数了_token

代码语言:javascript
复制
# 回顾下定位的几种方法
1、直接检索方法,适用于参数名未混淆,简单粗暴
2、xhr 请求可以使用 xhr 断点,简单便捷有一定局限性
3、查看 Initiator 调用栈,通用方法,需要一定的耐心分析堆栈实用万能

拢共就上面几种方法,不熟悉的可以多尝试尝试

我们用第三种分析堆栈的方法,可以定位到下面的 Js 逻辑的位置

可以看到请求都会从这里过一手

116行是没有_token

118行就出现了_token的值

所以经过117行就生成了_token的值

加密逻辑分析

重新加载,进入117行函数h的逻辑

现在这方法的返回值的地方打上断点,免得放跑了逻辑

经过单步分析可以知道

代码语言:javascript
复制
r 是将参数 e 中的参数名和参数值进行 & 拼接

主要的逻辑还是在 i.reload

继续单步调试发现在iP.sign前的逻辑又是对参数的解析,把上一步&拼接好的参数又变成了键值对的形式,在js中是解析成了一个对象

之后将这个对象传入iJ方法中,这里就是_token的部分逻辑了

进去可以看到,ck是将参数key排序,这样方便后端校验,同样的参数能得到同样的加密结果,之后又把上面的对象拆开变成参数名=参数并用&拼接

“反正就是来来回回的拆装拆装

然后才真正进入加密的逻辑

代码语言:javascript
复制
var iI = function(jc) {
    jc = cD.deflate(JSON.stringify(jc));
    jc = iD(jc);
    return jc
};

第一步是将数据压缩(defalte是一种基于zlib的压缩算法)

第二步是将第一步的结果 base64

然后返回加密的结果

之后重新回到上层iP.cts这里重新给参数cts赋值,这时候这里的iP是下面这样的形式

“注意_token 是 iI(iP) 的结果

为了验证上面的分析内容,我们写一段代码验证下

既然_token的逻辑我们知道了,那就拿一段_token测试下,看能不能还原成上面的iP

结果测试结果和浏览器一致,解压一次数据中包含的sign需要再过一次逻辑就可以得到明文了。

好了,今天的文章就到这里了,咱们下次再会~

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

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

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

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

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