前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫进阶必备 | XX读书window.__DATA加密分析

Python爬虫进阶必备 | XX读书window.__DATA加密分析

作者头像
咸鱼学Python
发布2019-12-12 16:20:00
8000
发布2019-12-12 16:20:00
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

今日网站:

aHR0cHM6Ly9zZWFyY2guZG91YmFuLmNvbS9ib29rL3N1YmplY3Rfc2VhcmNoP3NlYXJjaF90ZXh0PSVFNCVCOCU5QyVFOSU4NyU4RSVFNSU5QyVBRCVFNSU5MCVCRSZjYXQ9MTAwMQ==

抓包与定位加密位置

上面就是这次需要分析的网站了,先简单看看抓包的结果。【图1-1】

图1-1

抓包很清楚没什么幺蛾子,这次分析的网站加密的地方其实是他的搜索结果。

通过查看网页源码可以看到加密的地方。【图1-2】

图1-2

这里的 window.__DATA 的值就是搜索的结果。

我们直接搜索这个值就可以找到解密的地方。【图1-3】

图1-3

分析加密

这个网站的加密算法不同于之前我们分析的固定算法,我们先打上断点看看。

通过调试我们可以看到解密的核心算法的位置。【图2-1】

图2-1

先看看他解密后的值是什么样,确认下没有找错位置。【图2-2】

图2-2

解密后的明文通过比对就是我们需要的内容。

接下来就是分析解密算法的部分了。

难点分析

咸鱼自己动手扣了一下,加密在前半段的地方不难,不过有许多部分需要重新改写,所以建议大家自学Javascript部分语法,特别是实例化和原型对象的内容以及运算符中的三元表达式。

例如:

三元表达式

代码语言:javascript
复制
// 表达式1 ?表达式2 : 表达式3var b = 1, c = 1;var a = b == c ? 3:6console.log(a)

原型对象

代码语言:javascript
复制
function xianyu(){      this.name = 'xianyu',    this.age = '18'}
xianyu.prototype.hair = function(){  return '茂密'}
var xianyu1 = new xianyu()var xianyu2 = new xianyu()console.log(xianyu1.hair)console.log(xianyu2.hair)console.log(xianyu1.hair == xianyu2.hair)

同时需要注意的是这里的加密代码都是用n、a、c、S、s这类无语义的代码替换而成的。且因为许多部分需要重新改写所以在改写的时候方法命名一定要用使用规范,不要直接复制。

我们先看下核心解密的部分代码

代码语言:javascript
复制
var a = e.from(r, "base64"), s = Math.max(Math.floor((a.length - 2 * i) / 3), 0), u = a.slice(s, s + i);a = e.concat([a.slice(0, s), a.slice(s + i)]);var c = Object(o.hash)(e.concat([u, e.from(t)]));return n((l = {},l[c] = a,l));var l

前三行的方法没有什么难度,到关于c的定义部分的时候,o.hash这个方法里面有很多三元表达式以及原型对象的使用,需要逐步打断点的,逐个补齐。(适合新手)

或者直接将原型对象xxx.prototype这种整体抠出来再改写也是可以的(适合老手)

能够弄清楚上面的两块内容,特别是原型的内容,这个加密就很简单了。

接下来就是抠出代码的时候,使用 Python 运行出现编码报错的坑。

这个在前人的文章中有提到,咸鱼这里就直接指出修改的地方,就不赘述了。

代码语言:javascript
复制
subprocess.py 这个 python 文件中 类的初始化位置改下编码类型为 utf-8 即可

接下来 po 下运行截图:

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

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

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

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

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