这是老陈的交流群里一位群友的提问,交流群里的大佬巨多,我想这个问题应该很快就会获得解决。python
果不其然,很快有老哥给出了破解代码,默默点个赞,说句牛逼。web
这里先贴上 Loco大佬的知乎专栏 , 专栏内容主要是爬虫反爬,逆向的文章,更多人关注说不定大佬能奋起更新。chrome
还有给出代码的老哥i
写的教程,发表在aio老陈的公众号:ide
mp.weixin.qq.com/s/UP3EiMIuU…chrome-devtools
我看到原由里有老哥给出解答后,也抱着试一试的态度本身去试试,此次破解的主要内容在aio老陈的公众号写的足够详细了,因此本文就说说我遇到的几个卡住的点,对此次的解密作个笔记,便于以后复习回顾。工具
打开开发者模式
,切换到XHR选项卡
,发现这里有两个请求:测试
快捷键打开全局搜索,搜索encrypt_data
,发现只找到一个文件,在文件内搜索encrypt_data
有六处关联的地方:google
这里我遇到第一个坑:编码
经过检索我很快就找到了关联的地方,可是我用错了方法,没有认真分析代码一直在callback
里找解密的地方把问题复杂化了。
其实解密的地方就在下面截图断点的地方:
经过两次F11的调试,我找到了解密的地方:
这里我遇到的第二个坑,这里坑的主要缘由是我对调试工具的不熟悉,我一直使用的是F10的调试功能,正好 Loco大佬在群里讲解的时候说到了这一方面的资料:
找到加密代码以后就能够按照前面缺啥补啥的套路了。
这里来个代码的开头,抛转引玉。
这里是第三个坑:
抠出所有的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破解历程,但愿本文中说起的文章、教程对你有所帮助。
代码测试于2019-5-13
EOF