Python爬虫进阶必备知识点:JS加密逆向,超详细讲解

文章讲述了如何通过CSS的隐式写法追踪加密位置,涉及CryptoJS的加解密以及JavaScript代码的混淆处理。作者提到在Node环境中代码表现不一致,强调理解代码对于解决问题的重要性,并分享了Python爬虫学习资源的相关信息。
摘要由CSDN通过智能技术生成

既然这里替换的内容都是 span 那就从它开始入手吧。

可以看到应该显示在正文的内容显示在 CSS 的 content 中

在这里插入图片描述

我们大致清楚原来它是一种 CSS 的隐式写法。

一般 CSS 样式我们可以通过点击右上角的链接跳转到相应的文件位置,但是这里是无法跳转的

在这里插入图片描述

我们照着之前的思路,搜索一波看看能不能找到一些蛛丝马迹。

先试试搜索类名,找到的是请求页面的响应内容,并没有找到有用的信息。

在这里插入图片描述

继续搜索::before,这次找到的同样是请求页面的响应内容但是::before在文件的位置值得我们打开看看。

在这里插入图片描述

点开文件再次搜索,在这里就定位到了疑似加密的地方,对!只是疑似加密。

在这里插入图片描述

你不能因为代码长得丑、难理解就怀疑它是加密。

在这里插入图片描述

其实这里也可以全局搜索.context_kw可以找到操作 DOM 的代码,可以找到操作 DOM 的加密位置,搜索方法大同小异。

这里就不细说了,我们只要找到加密逻辑的整体位置就行,不妨碍我们分析。

分析与改写


既然找到一个疑似加密的位置,我们肯定是要分析一波看看是不是我们要找的。

通过大概的梳理,可以看到整个 JS 分为两个部分,第一部分 JS 是CryptoJS的加解密的内容,第二部分是经过混淆的内容,根据部分 JS 可以猜测第二部分的 JS 操作了 DOM ,完成了 CSS 相关的解密。

关于第一部分的CryptoJS没啥好改的,照着用就好了。

第二部分值得研究一下,因为是混淆过的内容,照着还原回原来的代码意义不大且费时费力,需要做的就是不停调试你看不明白的代码,争取能明白这个代码的意思,能理解的代码越多,去改写越简单。

在这里插入图片描述

简单说下代码的逻辑:

  1. 先取出 _0xa12e这个数组里面一个加密过的元素,取出后用 AES解密

var _0xa12e = [‘appendChild’, ‘fromCharCode’, ‘ifLSL’, ‘undefined’, ‘mPDrG’, ‘DWwdv’, ‘styleSheets’, ‘addRule’, ‘::before’, ‘.context_kw’, ‘::before{content:\x20\x22’, ‘cssRules’, ‘pad’, ‘clamp’, ‘sigBytes’, ‘YEawH’, ‘yUSXm’, ‘PwMPi’, ‘pLCFG’, ‘ErKUI’, ‘OtZki’, ‘prototype’, ‘endWith’, ‘test’, ‘8RHz0u9wbbrXYJjUcstWoRU1SmEIvQZQJtdHeU9/KpK/nBtFWIzLveG63e81APFLLiBBbevCCbRPdingQfzOAFPNPBw4UJCsqrDmVXFe6+LK2CSp26aUL4S+AgWjtrByjZqnYm9H3XEWW+gLx763OGfifuNUB8AgXB7/pnNTwoLjeKDrLKzomC+pXHMGYgQJegLVezvshTGgyVrDXfw4eGSVDa3c/FpDtban34QpS3I=’, ‘enc’, ‘Latin1’, ‘parse’, ‘window’, ‘location’, ‘href’, ‘146385F634C9CB00’, ‘decrypt’, ‘ZeroPadding’, ‘toString’, ‘split’, ‘length’, ‘style’, ‘type’, ‘setAttribute’, ‘async’, ‘getElementsByTagName’, ‘NOyra’, ‘fgQCW’, ‘nCjZv’, ‘parentNode’, ‘insertBefore’, ‘head’];

  1. 解密后的值放入到secWords中,对secWords中的值遍历并做了一堆骚操作,将处理过后的值放入到words当中,注意这里words就已经是文字了。

  2. 最后在 JS 的最后操作 DOM 进行替换

部分解析


这个 JS 不是很难,从网页复制的 JS 加上两个打印直接就可以使用,但是在 node 中直接运行发现输出的字符和实际页面展现的并不相同。

正确的字符是这样的

在这里插入图片描述

在 node 中运行输出的结果是这样的

在这里插入图片描述

明显 node 环境下输出的结果不是我们要的,而且字符数也少了两个,同一份代码环境不同,可以大致猜到可能是代码里做了一些对环境属性的判断。

这个时候理解代码的好处就来了,可以很快定位到下面这行代码

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-8XnHSL2f-1710982225807)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值