直接贴代码,需要学习的自己看,如有权益问题请联系我删除,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())