我猜想你可能不是需要研究通RSA加密算法(如果是这样的话,网上搜索一下,很多例子。)
我这里仅认为你是想爬虫http://www.aekun.com/这个网站,然后将歌曲下载下来
抓取网页你应该实现了(我使用requests模块来实现),相信你已经获取到了song_id了。
下面就是需要用这个song_id获取音频文件的url吧?这里需要使用这个song_id进行RSA加密算法得到songid的值(如果你是有这样的需求,python的pycrypto模块就可以实现,下面我给一个简单的例子)
假设song_id=3509519
- #!/bin/env python
- # coding=utf8
- from Crypto.PublicKey import RSA
- from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
- import base64
- import requests
- def songid_Val(pKey, song_id):
- rsaKey = RSA.importKey(pKey)
- cipher = Cipher_pkcs1_v1_5.new(rsaKey)
- return base64.b64encode(cipher.encrypt(song_id))
- def songInfo(songidVal):
- url = 'http://www.aekun.com/api/getMusicbyid/'
- r = requests.post(url, {
- 'songid': songidVal
- })
- return r.content
- # 获取pKey
- f = open('public.pem')
- pKey = f.read()
- f.close()
- # test
- song_id = '3509519'
- songidVal = songid_Val(pKey, song_id)
- print songInfo(songidVal)
复制代码
其中public.pem就是公钥,从aekun网站的song.js中可以找到,我复制下来保存到了public.pem中了
- -----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjpb+UHmzo8I3dtCi4pTRDdrtnt0fl1OK2BsdAwAp2sTIoiuXw1zVtlU/I8G9Fp0JTdNNxDo39vIvRaM6dSvCTI2kmAaikcDQf/LzOvNeoZfcVR9v5rxdyTzb2nwnkR0RG5ApN8MPpAKk26uYopbBGnbDZ8BMTO4o72KTB3xe4BQIDAQAB
- -----END PUBLIC KEY-----
复制代码
执行上面的python代码就可以获取到一个json数据包(如:)
- {"state":"success","message":"ok","action":null,"data":{"url":"http://us.aekun.com/upload/75AAB77BC2D16123F9F2E8B6C68FCB8E.mp3","song_name":"就算遇 到挫折、受到嘲笑,也要勇敢的向前跑!","coll":0,"singername":"小哥","singerpic":"https://m4.aekun.com/user_l_5973822_20170513135220.png"}}
复制代码