下载原理:
通过官方的下载链接http://music.163.com/song/media/outer/url?id=歌曲id.mp3,
分析网页寻找歌曲id组装成song_url,urlretrieve(song_url, path)下载歌曲,
用pyinstaller将程序打包,脱离python环境Windows可运行
程序环境
- python3.0以上解释器
- pycharm编辑器(编辑器无所谓,能写代码就可以)
代码实现
import requests, json, base64
from binascii import hexlify
from Crypto.Cipher import AES
from tkinter import *
from urllib.request import urlretrieve
import os
class Encrypyed():
'''传入歌曲的ID,加密生成'params'、'encSecKey 返回'''
def __init__(self):
self.pub_key = '010001'
self.modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
self.nonce = '0CoJUm6Qyw8W8jud'
def create_secret_key(self, size):
return hexlify(os.urandom(size))[:16].decode('utf-8')
def aes_encrypt(self, text, key):
iv = '0102030405060708'
pad = 16 - len(text) % 16
text = text + pad * chr(pad)
encryptor = AES.new(key, AES.MODE_CBC, iv)
result = encryptor.encrypt(text)
result_str = base64.b64encode(result).decode('utf-8')
return result_str
def rsa_encrpt(self, text, pubKey, modulus):
text = text[::-1]
rs = pow(int(hexlify(text.encode('utf-8')