专栏首页咸鱼学PythonPython爬虫进阶必备 | 关于某监测网站的内容加密分析

Python爬虫进阶必备 | 关于某监测网站的内容加密分析

点击上方“咸鱼学Python”,选择“加为星标”

第一时间关注Python技术干货!

建议收藏 | 最全的 JS 逆向入门教程合集

目标网站

IGh0dHBzOi8vd3d3LmFxaXN0dWR5LmNuLw0K

还是上次的那个网站,上一篇分析了关于反爬的绕过,在正文里随口提了一句说这个网站关于正文加密的部分很简单,晚上就收到几位读者的私信,希望能够讲讲关于正文的加密是如何解密的。

打开网站,关于如何过 debugger 反爬,直接参考上一篇的内容,这里不做重复了。

JS逆向 | 分析某监测网站的 debugger 反爬措施

请求分析

打开控制台之后,重新加载一下页面,捕捉请求。【图2-1】

图2-1

可以看到有一条xxxapi的请求链接,可以看到请求参数也加密了。【图2-2】

图2-2

除了参数之外,同样这个请求的返回值同样也是密文的。【图2-3】

图2-3 | 部分结果截图

经过请求分析,明确了现在要分析的加密是参数和返回值。

加密参数分析

先开始关于参数的分析。

通过多次加载请求,发现所有的参数加密的名字都是不相同的,所以全局检索参数名定位到参数加密的可能性很小。所以直接用 XHR 断点。【图3-1】

图3-1

重新加载页面,加载数据就断上了。

可以看到这里是请求发起的地方,数据已经加密好了。【图3-2】

图3-2

所以需要分析堆栈,在【图3-3】所示的位置,我们找到了生成好的参数。

在这里可以看得到,参数是经过pxteFCahl这个方法生成的。【图3-4】

图3-4

追进去可以看到参数的生成逻辑了。【图3-5】

图3-5

加密参数就是将相关的参数哈希之后再 Base64 编码的结果,如果直接用 Python 复写需要注意 NodeJS 与 Python 的关于 Json 转化是有一点点区别的。

如果搞不明白的可以直接扣一下代码,对新手友好。

返回值解密

分析完加密参数后,再来看看返回值是如何解密的。

在上一部分,我们定位到了加密参数生成的地方,在生成的位置下方就是加密返回值解密的位置。

在 Ajax 中,发起请求后,可以根据请求的结果执行不同的操作,这里在请求成功后,执行了结果的解密。【图4-1】

图4-1

上图的daA0vPWcfr2就完成了返回结果的解密,我们可以追进去看看他的逻辑。【图4-2】

图4-2

可以看到这个逻辑也是很简单的,加密的结果先后经过 AES + DES + BASE64 的解密/解码就可以得到明文的代码了。

并且相关的秘钥都可以直接检索得到。【图4-3】

图4-3

这类简单的加密代码,扣取起来难度很低,也可以用 Python 直接复写。

简单扣取之后,就可以直接将加密的返回值带入运算了。【图4-4】

图4-4

总结

这个网站还是比较适合新手练手,加密的难度相比上一个版本略有下降,更多的是对浏览器使用方面的考察。

没有动手扣过代码的可以试试扣取一下代码,非常适合新手动手实践。

[ 完 ]

本文分享自微信公众号 - 咸鱼学Python(xianyuxuepython),作者:煌金的咸鱼

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JS逆向 | 分享一个小技巧和XHR断点的小案例

    关于XHR BreakPoint在很多文档中都有提及,咸鱼就不啰嗦了,还不是很了解的可以看下面的文档。

    咸鱼学Python
  • Python 爬虫进阶必备 | 某视频平台 sign 加密参数分析

    Byb29tJTNGc3BtJTNEYTJoMGMuODE2NjYyMi5QaG9uZVNva3VVZ2NfMS5kdGl0bGUlMjZpZCUzRDgwOT...

    咸鱼学Python
  • Python爬虫进阶必备 | 某小说(XX猫)网站加密分析

    aHR0cHM6Ly93d3cuY2l3ZWltYW8uY29tL2NoYXB0ZXIvMTAzNTQzODcy

    咸鱼学Python
  • JS逆向 | 分享一个小技巧和XHR断点的小案例

    关于XHR BreakPoint在很多文档中都有提及,咸鱼就不啰嗦了,还不是很了解的可以看下面的文档。

    咸鱼学Python
  • Spark 模型选择和调参

    官方文档:https://spark.apache.org/docs/2.2.0/ml-tuning.html

    HoLoong
  • 超参数

    在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高...

    种花家的奋斗兔
  • shell入门第五讲

    位置变量指的是脚本(或者函数)后跟的第n个参数。我们这里暂时先讨论脚本传参的用法。

    小小科
  • 《Linux命令行与shell脚本编程大全》第十四章 处理用户输入

    有时还会需要脚本能够与使用者交互。bash shell提供了一些不同的方法来从用户处获得数据, 包括命令行参数,命令行选项,以及直接从键盘读取输入的能力。 14...

    xcywt
  • Android仿QQ首页ListView左滑置顶、删除功能

    实现源码:package com.duguang.baseanimation.ui.listivew.deletelistview;

    砸漏
  • 机器学习必备 | 最大似然估计:从统计角度理解机器学习

    本专栏之前的文章介绍了线性回归以及最小二乘法的数学推导过程。对于一组训练数据,使用线性回归建模,可以有不同的模型参数来描述数据,这时候可以用最小二乘法来选择最优...

    PP鲁

扫码关注云+社区

领取腾讯云代金券