最近采集一个网站,返回数据json数据全是这样的:
很明显是这个数据是做了加密的,于是尝试在sources中寻找关键加密的关键字,诸如base64等,果不其然,打几个断点发现这里就是所有json数据解密的关键过程:
百度搜索关键字aes相关,在结合解密代码,在一个加解密网站成功复刻了数据:
接下来就是利用Python3完成对应的解密过程,对应的博客的加密和解密 简单分离处理后得到Python3版本的AES CBC模式的解密函数
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
def decryot(key, i, text):
'''
AES-CBC解密函数
key:秘钥
i:偏移量
text:加密数据
'''
# 全部转换为字节
key = key.encode('utf-8')
i = i.encode('utf-8')
mode = AES.MODE_CBC
cryptor = AES.new(key, mode, i)
plain_text = cryptor.decrypt(a2b_hex(text))
# return plain_text.rstrip('\0')
return bytes.decode(plain_text).rstrip('\0')
key = 'jo8j9wGw%6HbxfFn'
i = '0123456789ABCDEF'
text = '4bd02be856577e3e61e83b86f51afca55280b5ee9ca16beb9b2a65406045c9497c089d5e8ff97c63000f62b011a64f4019b64d9a050272bd5914634d030aab69'
real_text = decryot(key, i, text)
# print(text)
print('\n',real_text)
解密结果:
{"code":408,"message":"token失效","success":false}
文字中的token是另一个问题,算是获取json文件的参数,有兴趣的朋友可以看看我上一篇文章,这个token放在localStorage中的,需要selenium拿。