├── README.md ├── xiami.py ├── xiami.js └── xiami.php /README.md: -------------------------------------------------------------------------------- 1 | xiami 2 | ===== 3 | 4 | 虾米歌曲链接地址破解算法 5 | 6 | * PHP版 7 | 8 | * Python版 9 | 10 | * Js版 11 | 12 | 13 | -------------------------------------------------------------------------------- /xiami.py: -------------------------------------------------------------------------------- 1 | #encoding:utf-8 2 | import urllib 3 | 4 | 5 | def caesar(location): 6 | num = int(location[0]) 7 | avg_len, remainder = int(len(location[1:]) / num), int(len(location[1:]) % num) 8 | result = [location[i * (avg_len + 1) + 1: (i + 1) * (avg_len + 1) + 1] for i in range(remainder)] 9 | result.extend([location[(avg_len + 1) * remainder:][i * avg_len + 1: (i + 1) * avg_len + 1] for i in range(num-remainder)]) 10 | url = urllib.unquote(''.join([''.join([result[j][i] for j in range(num)]) for i in range(avg_len)]) + \ 11 | ''.join([result[r][-1] for r in range(remainder)])).replace('^','0') 12 | return url 13 | -------------------------------------------------------------------------------- /xiami.js: -------------------------------------------------------------------------------- 1 | module.export = (location) => { 2 | let num = location[0]; 3 | let params = location.substr(1, location.length); 4 | 5 | let sliceLength = Math.floor(params.length / num); 6 | 7 | let remainLength = params.length % num; 8 | let group = []; 9 | let result = ''; 10 | 11 | for (let i=0; i 34 | --------------------------------------------------------------------------------