爬虫 网易云音乐评论加密 Python3翻译
直接贴代码,需要学习的自己看。如有权益问题请联系我删除,q:1847858794
# -*- coding: utf-8 -*- import base64 import random import requests import codecs from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import algorithms from cryptography.hazmat.primitives.ciphers import Cipher from cryptography.hazmat.primitives.ciphers import modes class WangYiYun(object): def __init__(self): self.rsa_public_key = '010001' self.rsa_modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7' self.aes_key = b'0CoJUm6Qyw8W8jud' self.aes_iv = b'0102030405060708' def random_key(self): text = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' key = '' for i in range(16): random_num = random.random() * len(text) num = int(random_num) key = key + text[num] return key def aesEncrypt(self, content, key): if not isinstance(content, bytes): content = content.encode() content += b'\x07' * (16 - len(content) % 16) cipher = Cipher(algorithms.AES(key), modes.CBC(self.aes_iv), backend=default_backend()) encryptor = cipher.encryptor() data = encryptor.update(content) _data = base64.b64encode(data).decode() return _data def rsaEncrypt(self, content): content = content[::-1] rs = int(codecs.encode(content.encode('utf-8'),'hex_codec'), 16) ** int(self.rsa_public_key, 16) % int(self.rsa_modulus, 16) return format(rs, 'x').zfill(256) def encrypt(self, content): random_key = self.random_key() aes_cipher1 = self.aesEncrypt(content, self.aes_key) aes_cipher2 = self.aesEncrypt(aes_cipher1, random_key.encode()) rsa_cipher = self.rsaEncrypt(random_key) return {'params':aes_cipher2,'encSecKey':rsa_cipher} def getHTMLText(data): url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_1318156992?csrf_token=' _data = { 'params': data['params'], 'encSecKey': data['encSecKey'] } headers={ 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' } r = requests.post(url=url,headers=headers,data=_data) if r.status_code == 200: return r.content _data = '{"rid":"R_SO_4_1311319058","offset":"80","total":"false","limit":"20","csrf_token":""}' data = WangYiYun().encrypt(_data) print(data) html = getHTMLText(data) print(html.decode())

浙公网安备 33010602011771号