网易云音乐评论加密

直接贴代码,需要学习的自己看,如有权益问题请联系我删除,q:1847858794

效果图:

python3代码:

# -*- coding: utf-8 -*-

import base64
import random
import requests
import json
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_exponent = '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 aes_encrypt(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 rsa_encrypt(self, content):
        content = content[::-1]
        rs = int(codecs.encode(content.encode('utf-8'),'hex_codec'), 16) ** int(self.rsa_exponent, 16) % int(self.rsa_modulus, 16)
        return format(rs, 'x').zfill(256)

    def encrypt(self, content):
        random_key = self.random_key()
        aes_cipher1 = self.aes_encrypt(content, self.aes_key)
        aes_cipher2 = self.aes_encrypt(aes_cipher1, random_key.encode())
        rsa_cipher = self.rsa_encrypt(random_key)
        return {'params':aes_cipher2,'encSecKey':rsa_cipher}

def getHTMLText(data):
    url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_1293886117?csrf_token='
    _data = {
    'params': data['params'],
    'encSecKey': data['encSecKey']
    }
    headers={
    'Content-Type': 'application/x-www-form-urlencoded',
    'Referer': 'https://music.163.com/song?id=1293886117',
    '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_1293886117","offset":"60","total":"false","limit":"20","csrf_token":""}
data = WangYiYun().encrypt(json.dumps(_data, separators=(',', ':')))
html = getHTMLText(data)
print(html.decode())

猜你喜欢

转载自blog.csdn.net/qian123shuai/article/details/86660213