小白尝试爬取网易云评论区内容在encSecKey参数处理上破防了求大神帮忙看一下,我看js基本上都靠gpt
params参数目前已搞定,由于js会在每次请求生成一个16位的随机数i作为params参数第二层加密的密钥,encSecKey是这个随机数i的RSA加密结果,目前可以做到现去网页手动扒i和encSecKey扔进post请求最后获得正确的json文件,但是一旦这个随机数自己生成并RSA加密返回的就是空内容状态码200,还有一个小点就是晚上拿中午取下来的i和encSecKey进行请求请求好像会被挂起
下面getRSAkey是我的key加密代码
def getAEStext(self, a, b):
iv = "0102030405060708"
a = pad(a.encode('utf-8'), AES.block_size)
cipher = AES.new(key=b.encode('utf-8'), mode=AES.MODE_CBC, IV=iv.encode('utf-8'))
ciphertext = cipher.encrypt(a)
print(base64.b64encode(ciphertext).decode('utf-8'))
return base64.b64encode(ciphertext).decode('utf-8')
def getRSAkey(self):
e = int(self.e,16)#指数
f = int(self.f,16)#模
public_key = RSA.construct((f, e))
#print(f'public_key{public_key}')
cipher = PKCS1_OAEP.new(public_key)
encrypted_message = cipher.encrypt(self.i.encode('utf-8'))
#print('key')
return encrypted_message.hex()
下面是网页的js,函数c是key的加密
function c(a, b, c) {
var d, e;
return setMaxDigits(131),
d = new RSAKeyPair(b,"",c),
e = encryptedString(d, a)
}
function d(d, e, f, g) {
var h = {}
, i = a(16);//产生16位随机数
return h.encText = b(d, g),//g和i是密钥
h.encText = b(h.encText, i),//返回的是parmas
h.encSecKey = c(i, e, f),
h
}
Python
javascript