Python 爬虫进阶必备 | 一次群聊引发的防护加密讨论

举报
xianyuplus 发表于 2021/10/24 15:36:17 2021/10/24
【摘要】 事情起因这是aio老陈的交流群里一位群友的提问,交流群里的大佬巨多,我想这个问题应该很快就会得到解决。果不其然,很快有老哥给出了破解代码,默默点个赞,说句牛逼。这里先贴上 Loco大佬的知乎专栏 , 专栏内容主要是爬虫反爬,逆向的文章,更多人关注说不定大佬能奋起更新。https://zhuanlan.zhihu.com/webspider还有给出代码的老哥i写的教程,发表在aio老陈的公众...

事情起因

这是aio老陈的交流群里一位群友的提问,交流群里的大佬巨多,我想这个问题应该很快就会得到解决。

果不其然,很快有老哥给出了破解代码,默默点个赞,说句牛逼。

这里先贴上 Loco大佬的知乎专栏 , 专栏内容主要是爬虫反爬,逆向的文章,更多人关注说不定大佬能奋起更新。

https://zhuanlan.zhihu.com/webspider

还有给出代码的老哥i写的教程,发表在aio老陈的公众号:

https://mp.weixin.qq.com/s/UP3EiMIuUV5jSQZIP7FJ8A

经过

我看到起因里有老哥给出解答后,也抱着试一试的态度自己去试试,这次破解的主要内容在aio老陈的公众号写的足够详细了,所以本文就说说我遇到的几个卡住的点,对这次的解密做个笔记,便于之后复习回顾。

查看加密请求

打开开发者模式,切换到XHR选项卡,发现这里有两个请求:

搜索加密参数

快捷键打开全局搜索,搜索encrypt_data发现只找到一个文件,在文件内搜索encrypt_data有六处关联的地方:

这里我遇到第一个坑:

通过检索我很快就找到了关联的地方,但是我用错了方法,没有认真分析代码一直在callback里找解密的地方把问题复杂化了。

其实解密的地方就在下面截图断点的地方:

找到关键解密的地方

通过两次F11的调试,我找到了解密的地方:

这里我遇到的第二个坑,这里坑的主要原因是我对调试工具的不熟悉,我一直使用的是F10的调试功能,正好 Loco大佬在群里讲解的时候说到了这一方面的资料:

https://developers.google.com/web/tools/chrome-devtools/?hl=zh-cn

补全代码

找到加密代码之后就可以按照前面缺啥补啥的套路了。

这里来个代码的开头,抛转引玉。

运行代码

这里是第三个坑:

抠出全部的js代码后有一个坑的地方,就是在js运行正常的代码在python中调用的时候出现报错,这个报错的解决方案如下:

正常我们抠出的js代码如下:(关键部分)

实际上在python中调用的时候要这样写:(代码源自开头给出代码的老哥那)

function my_decrypt(t) {
    return new Buffer(s("5e5062e82f15fe4ca9d24bc5", my_decode(t), 0, 0, "012345677890123", 1)).toString("base64")
}

之所以这么改的原因是:

“因为直接返回object给Python会报错,所以这里将JSON.parse移除了,返回parse前的json字符串,同时为了防止这串字符串内有特殊编码的字符,这里将它转成base64再return” – Loco大佬

以上就是这次源自群聊的js破解历程,希望本文中提及的文章、教程对你有所帮助。

EOF

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。