metowolf / neteasecloudmusicapi Goto Github PK
View Code? Open in Web Editor NEW网易云音乐API,项目合并至 Meting
Home Page: https://github.com/metowolf/Meting
License: MIT License
网易云音乐API,项目合并至 Meting
Home Page: https://github.com/metowolf/Meting
License: MIT License
看了你的wiki,网易云音乐API分析 eapi,手机客户端eapi返回的数据解压gzip还是乱码,解压后如下
b'\xcar\xc5\xb9g\xe9q\xe6\xc9(2\xd4\x8f\xb4\xdc\xca\xad\x9b\xc5\xb2\xf7\xe2\x97\xd9\xb0\xdd\\]\x7f\x15\xa6\xc9\xb3a\xe0\x12|h\x10\xa0\x84B\xb3\x0f\xae\xd3\x01\xe7\x95\x91o\xaf\xd1\x95w\x80j\xd3\x06y\\\x9c|\xb5\xd3n\x94\xd3)\xa7\xea\x1a\x9c&e]\x14\xadh\'\x88\x10Qu\x99\xe4\xe6!\xbf\x11\xebq\xbb\xe5P\x8c\xb6\xf1\xb9Z|\x98\xa5u\x98\xf9+\xd77\xa8\x8f=\xda\xc9\xb2\x16H\x10N";\x1f\tx\xf8\xf7\x99i\xea\xc8\xa8\xf5\xbc\xb4\xc5y\x83\x88\x05\xdaR\xba\x0f\xcfWb\xe9\x8e*(Y\xf65\x1e\xc8}\xe9k\t\x81\xe8\xa9dY\xe3\xf0\x85f\xb7\x8d\xad*&X\x1dw\xdf\r\xcc-R\xe8\x8bG"\x8ec\x87z\xfb\xf0\xf6\xa8\x135Y\xbd\xa3\xf46A\xea\xc5_\xfb\x9b\x19pI\x19\x92\x9e\xbe:)<\xf81\xf2\xd3\x8au~\x82\xe6\x13iBG\xf1\x83@~\xa6\xca\x1a\x9e\xc48\xc8\x19\xc1\x9c\x8do\x9d\xf0R.\x0f?\xe5[\xcb \xa0\xa7\xab\x17c\xff\xe4\xb1\xebY\xd2!G\xe0.C\x1d\xbe\xc8\xd7\t{.\xb6w(\x90\x9f#\x19\xb3|$\xbc\xa3F\x0e\x1d\xb5\xca}\xf0\x1e\xbbMFyd\xa4\x88\xb3S\x85b\xc1\xd5)\x9cC\xd0Q\xe5\x8c/O\xeb\xe3\x90A\x0e\xaa\\G\xc7\x8e\xfd9y_\n:\xa1\x1b]ys~?\xefw\xb1R\xdbe\x91\xd4\xb2\xaa\xe8\xe8!\xff\x0c\x1ct\xb7\xe1e\x08\r\x1f\x1c\x85\xaf\xe9\x9b\xd2\xcd\xa1\xa4\xf9\xc3\xeb\xb0\xe9\x01\xc4\x1d\x0c=u n\xd9\xf3\x06\xff\xfa`\xff\xa1\xef\x18]\x95Qa\x04\x1e\xd3\xaa\x95`\xc8Ww\xd0\xa7\xb7\x9a\x8c}\x9fz\xa6+\xe7\xc8?\x0cs\xd8\x11\xa6\xbaJfjgz\xfb\xcb\xcf\x98k\xb76\xd1bo\xb1\xdd\xa1\xd5\xd5\\\xd6\x0e\xea~\xcc\x1dv\xdd\xa5\xf07\x16\xc3\xcd\xe9Zbru+\xcd\xe3\xa3;\xfe0\xd2\xe6\xc9!\xfc\rp\x85\xd8\x0b\x10\x07W\xb07\x93\xe9\x12\r\x95\xca\xc5s\x83\xb1)\xc2U\xb7\xa1\xdc\xae\xb8\xea\x84\x8f\x07e\x1a\x85Hs\xcf>x\x9e\xb3\xfd\xb9JU\xc8\xc2\x9a\xa1\x8d\x07\xecY\xe53\xa4\'RA\xea\x0b\x19^72\xcc)K\x91+(\x91M\xb2<(\\#\x05\xd6\xe5I\x85\x98\xf2\x173M\xd1\xa5Q[Rn\xaeg\x1b\xa3\xc39\xfdn\xecu\xd5\xa3\x8e\x81G\xb6\x99\x08\x0fg\xf4\xd0\xaaC\x19:\xcaIp\xdb\x91\xb1\x9db\xe5[K\x8f~\xefgKJ|\x16\xe0\x19\xa8_\x16\x99\xa7\xb0\xa4G\xea\xee\xf4\xd2\xc7\xcd\xb8\x10y\xfc\x16\x02$\xf9\'\x05\xa9,~\xa3\x1d\xfe1|\xf9\xb3\r+~\xc6\xcdW\x92\xbd@c1\xb5(\x01C\xbe\x82\x92q\x0e\xa7\xa4\xff\xe8w\x11\x80\x07F\x9f\xf8\xad\xca\xa8>hw\xad\xe0\x90M[\x18\x13i.Z\xdf/\xa8\x0f9{\xde\x84\xb2\x9f(\x83Ys\xa7\xd5\xfc\x8fr/\xaa\'\x90\x01:xc\xec\x1a\x9e\x00\xddV\x85\xf6 \xba\xc3k\xfd\xe6Q\xeb\xd7\x91\x10\xd4Zl\x8e\xa8\xdb\xb9S\x8d\xd7M#A<q\xd9\xe9\x90\xbf\xcf.f\x00\xa2\xcb\n1@d\xeab!\xd3\xbb@\xa26\x98Xz.\xe1\x1c\x99~\x9f\x89\x00\\\xbc\x07\xf3\xd1\xc1\x1e4HDjR4q\xb3]t\xf4\xbd\xdc\xe3\xbbP\xc9\x07|\xe5X4\xfc\xee\xd3\xc7;\xd7&\xfb\x9f\xd3\x16\xe8#M\xfd\x8fcK>\xd8\x82\xdd0\xda\xa72\x17\xfa\x88{\x0e\xa6\x95\xfa\xb1\x97o\xc4\xfe\x0cV\x01\x1c\x91\n\x1bVG\xa0e\xf3(\xd5\xb8\xa9\xe1\xde(\xa9\x831\xd9\xcf\x1c\x07,1V\x9e\x81={\xa5Z2^\x98qC\xf6aLy\xe7me\xc0\xec\xf6%Q#.\xd9k\xb4\xa6\xc5i\xa0UW\x83M\x91\xb9\xd6\xfc8\xc1!\xbc\x10\xf4\xf9\xe5\xf8q\xca\x89\xe89;\x08|#^\xb3\x81%\xae\xa7\x93\xf7\xf7\xe3K\xf4\xc5t\xb6\xa2\tx\xcb\xc3\xfbV\xf4&m\x93\x10m\x90\\\r\x18\x07/\xd6\xbf+^I\xff\xe5\xe7\x85e\x9e\x01?\xc7\xd0\xbfx~\xf0\x90c\xed:\x08\x1enf\x04\xaam\x90\xfb\xa9\xd1Lg\x81|e\xcdN\xe1IWX\xaf\xc4+\xa2\xfb\xc4\x9a\xfb\xd0\xf2\xca\xa69\xf8\xc9\x1d\xc9>7v\x1e\xd7H\x9c\xb7$\x8bS&\xc4(j:3\xad\x9c\xe5\x1f\xf9\xc6O\x89\x95mV]\xd2\n\xd3w\xc7\xfc\xbd\xd2\xcd\x99\xa0cC\x1a`4\x97\xaeq\xf4\xaa\x85S\xaf\xca\xbaj\xab\xd8+H\x85\x1d\xe6#\xf0\xde\xe9O\xcak{\xc7\xe1F\x15\xacY\x10\x92\xef!\xe1\xd8dV\x1fa\x8al\x0c,\xf3\xf9P\xed\xf0^\x17\x9c\'\xe3n\t\x17~\x97\x9c\xf5T\x99\t\xc3ux]\x83\x08\xc4\xb9\x94\xe6\xb0\xb3\xfe\x95\xa9J6\x7fu\xc2\xc4\xa9\xf5\xfe\xfa Y8\x06+\xea9\x8d\xc0{:\x9c\xa8\xfc\x92\x13\xce\x1d\'\x81\x01\xf9\xc1$D\x00\x92\xaa1\xfdS\xee\xe7\xd4Q\xec\x81\x19\xc0?DY\x1a\xba/l\x90\xc3)\x86\x16L\x00\xf6\x81\xa5\x05\x86\xf2T\xa4\xf9\x98\xf2\r\xf9`0R\xcbq~\xcb5H\xa5\x9a\xf8\x9d;\x81\xfe1\xf4.\xa7\xc3g\xb6n\xfckP\x82\xb4X\x85\x87\xc9\xe6\xca_m\xa4\xf3,\xda\xa0\x9b\x00\t\x8aw\xebg\xb1\xbc\x01\xe7\xeb0\xfb^J@xZ}\x9e\xeav\x1a}\xb9&:\xf7\xfa\xe5\x17\x96o0Z\x15\x12h\xdf\x16\x05\x1b\xdd>\xc4\xad\xed\x14>\xe87Q\x9d\x04\xa3\x06i\xef\xe5\xca\x112)%\x93CX\xe7\t\xf3\xf7\xbd\xa7\x84\xe1\x0f\x88N6\xff2\x8c\x1c9\xd0\xb2\xe3\x7f\xb4\xd2\xa2\x92\xf3i\xa0DEe\xfc\xb9n\x8b\x84\x94\xce\xeeP\xa2\t\x9a\xa9\x03`\x02Q{Q\x95|R\x90\xc0\x06\x9fT\x06I\xb9"\xab\x05A\x0f\xa7\xd1_\xb8\xd1SJq\xc9\x19\x95$^wX\xe1\xc6\rA\xed\xab\xdc@\xbe\x9a\x97\xe0\xd2\x12g\x13\x16\xa6\xf4 \x1a\xc3\x92\x11\x8d\xb4\xcc=\xdd\xca\xbaG\x81\xa1\xddhd\xa7\x88\xc7\x94{<\x12\x9d\xfc\xa9X`N\xcc<\x9db\x9cC?\xa2\xf7\xbc^\x9f\xf0\x11\xfa\x9a\xc1Rf\x19\x9c\xeb\xf6\xd8\xde\xe2B\xb8\xbfs\xf3\x12\xc9]\xb0U\xf89e\xae\r\xfdH+*CV\x80\xc8\xa8\x86R\xee\xf7\xfeR\xe0b,\xd08\t\xb9\xa8`\xb9\xae\x9eV\x1e\xbf\xfb5\x80\x8d\xbb!J\x04\xa6\x86w\xa6<\x12#\x96\xf0$Z\x1bB\xdf\x039~\xaf\x91\xe2\xfa\xd2\xbdG\x84\x9eX\xb0\x00e\xc9\xa8\'L\x98\xaa\xedJ>a\xe4w\x1c\x17z\xea\x7f\xfa\x11\xa3s\x98\xdb\xd6zs\xfc\xffx\xc5cZ\xfb\xcc\xbd\x8c\xfc\x90/ \xadqv\'\x9b\xac\x99\x88\xa0HgAs2\xf8\xc3 \xb3\xf1\xc5>I\xf4\xab\xe7\xef\xf5h\xa9t2N\x97\xea\xd0\xee\xdap\x02\x82K\xfc$\nP\x00\xa7\x1a\x94\xe0h\xff\x06m/\xc9\x82$ojE\xb5\x9c\x8c\xca\x95_\x1b\xb4\xa9\x08\x88$\xc0!^\x9b\xe52\xf6E\xd4\x0c-2y\xfd\xc7\xe9\xbd\x11\x9e\xa5\xb6)\'\n\xc1Z\x9a\x84\xe9\xc7\x87O@\xf6\xa0\xe6z;\x9e\xa5\xd0o\x87!\xd7\xd7\t\xfe\xe5Y[\xedW\xd4!\x15\xf4\xb9\x85\xf2S\x1c\xc4\x90\xccE\xac\xfa5~\x80(\xb3\xa2\x12\xd8\x10!=;\xd6\xca\x99\x15\x16\xfa\x9d;\xc4\x06\xdch\xdbK\x9byp\x1a\x10X\xdd\x05is\x18T\xba\xca\xad\xbcJ\x08V*s\x93x\t\x1eJOC\x0f\xfe\xcf\xf0\xc0\xfb:\x90\xef\x1a\x18&\xf1\x92.\x81N\xd6\xcb\x81\xe7\x86h\xb7\xf2\x15L\xd5\x16\x0c\xc2:\x13\xed\xbb\x1c\xf6\x86\x1e\xf64\x93tv\x1f\x05\'\xa57\xb1T\xaa\xe7=\xe5\xf1\x1a\x85\x1b\x8a,\x04D)\xb1R\xdc\xc8\\\x98\x8a\x8c``\x9a\x90\x0b\xde@O\x90\xcd\xea\x84\x95\x94\xe3/hN\xff\xd2tfy\xb0c\x1c\x9f\x90\xed@\xc8\xd64\xe3\x1e7is\xf1\xd7\xb6\xb5\xbd\x072\xe7\xe8\xc2\xd6R|\xa1R\x17Z\xfa\xa1eY\xd9_\x96\x08\x84\xd71jlA\xfa^\xca\xaf_\x92kE\xc9\xb3(\x87\xe4\x13m\xb7z|\xa4\x83"\xd2\xc8\xb8._\xf2\xe6Q5v\xfe\x0bN*\xd2\x01g+P\x9e\xf6\r\xac\x0b\xe2H\xf2\xb21\xbd5\x13\x15\xdaN|Hy\xfb\x91\xec]\x08q\xda\x92\xd7\x8a\\\xdf\xb7\x88c\xacz\xc9]M\x05V\x9c)d\xac\xb0$\xfe\x0f\xef\xec\x88%\x10\xb3|\x1a?"\xd6N\x1a\rS@F\xe5\xcd6F\xb9\x10MJ\xb4;\xe2^\xe6D\xa2\xba\xdc\x0c\n\xef\x92 :\xca\xea\xf8\x8a\x84\x86\xe6\t\xd5eb6\x1dL\xd1)\x03\x00k\xec\xd4\x03\xb7\',\xf8\x8cL\xf6\xfeU=\xafh\xbc^<\x7fW0\x84\t\xab\xee+\xf3\xb4\xfdkDc\xc3\xcc\xd0H\x92\x1b\\-n\xae\xa6(\x8aI>\x03\x17\x84\xe2\xe1\x89\'W\x7f+\xee\x82\xcb\x0f\xc6\xc3\xca2CD\xdc\xd3\xdc\xa4u\x96\x94M`>\x84\xe9\x7f\xc0\x9d\xe1\x84&\xee\xc7\xdb\xa1\x96\x89\x14\xe0M\xf0ilt\xab\x1e-\xcb\xca(\xbd\xe6\x06\x95i\xd4\xa6#\x91\xae\x93\xd5\x87M@w\xd2\n\xe5\n\x8b\t\x16\x1br\xa2\x17\xb7@1\xaa\x18-\x16(\xcc\x10e\xec\xdb\xe2;\x8b\xfaf\x9a2\x97\x80%\x85\xc0\xc4\xca\xb4H\xbf\xb1\x90Z\xfb\x1e\xc2\xfd00\xd2]I\x0b\x7f\x13\xc7\xda\xd9O7\xb0)x\xaf\x8718\x7fv\x19\x9fV@H\xea\xff\x92\xdbt\x96\x82\'\xe6\xb0>t\xba+*9r\x0e\xe6\\\n0\xc7\xa5&\xb3R\x10\xcb\x1e7\xe9\x80\xbf\xd1\xbb\xc7\x9f\xae\x05C\xad\xefR1\xdbh\xbb\xcc\x18T\xfc\xb9\xb3\xa4I\xc0\x96\xef\x80\x96\xed5\x03Ic\xee\xc3\x9e\xe7\xbc\xed\xfc/\xbf{\xe3\xae\xfbeh\x89{\x96\x1f\xd4q\x1f\xaa9w\xae\xf8\x90\x85\xc6\xd8U!\x0f\xcc\x9a\xa1\x89V\xc7\xf8\x89A5<\xd1"\xfd\xbb\xc8q\x8dqH\xd4\xaf\x90Z\xbdn&\x96\x9a\x8a\xaax\x9e\xe8\xb8\'<\xd7\xc4pD\xcb\x00\x8c\xfd\xba\'\xe4j\xd3\x8a\x91\xbaT\xcc\xc2k\xed\xbce^\xc4\xe1\x0c\xe7&\xdaZ\x9c\x8e\x84\xe5\x83\x9bhl\xbe6\x95\x0e\x1cG\xd2\xac\xa9\x03\xe3(\x99+\xea\x0e\x95\x1e\xf7\xf0s\x1f\xe9g\xaf\xb9}k\xecT\xff\x15a&\'\xbc&\x86\x89fO\xef\xb4\xe7\xa88\xf2\xb1/k:\x1b\xc1\x08\\\xf4\x0c$n\x1a/\x0b\xbex\x9f\xab\xa8\x17\x113\x98\x8ato\x9e\x87~{h\xd0\xa4\t\\D\x82\xa5\xfa@\xed\x10\xcbX\xe3\xa8\x11z\xea\x7f\xfa\x11\xa3s\x98\xdb\xd6zs\xfc\xffx\xc5cZ\xfb\xcc\xbd\x8c\xfc\x90/ \xadqv\'\x9b\xac\x99\x88\xa0HgAs2\xf8\xc3 \xb3\xf1\xc5>I\xf4\xab\xe7\xef\xf5h\xa9t2N\x97\xea\xd0\xee\xdap\x02\x82K\xfc$\nP\x00\xa7\x1a\x94\xe0h\xff\x06m/\xc9\x82$ojE\xb5\x9c\x8c\xca\x95_\x1b\xb4\xa9\x08\x88$\xc0!^\x9b\xe52\xf6E\xd4\x0c-2y\xfd\xc7\xe9\xbd\x11\x9e\xa5\xb6)\'\n\xc1Z\x9a\x84\xe9\xc7\x87O@\xf6\xa0\xe6z;\x9e\xa5\xd0o\x87!\xd7\xf2\xc9AC>m\xbeu\xa8\xcc\xaa\xd0\x95\xc8\xacQ[g\xff\x98\x875\x17<\xf1\xfa\x9ck\xefD\xb7Q\xccr-67>U\t\x97G\x82\x8b[[|\xdd\x8fo%\xf6\xbb9i\x88e\x993\xb3\x17)\x14\xdb-\x1ajZ\xc5\x9c3C\x0ff\x9a\xc2\xe4m\xa1\xd2xooh\n\xac>\xfdF8\xc4\xb7t\x9bYOr\xc3R\xdb\x9f\xbbS(Bf\xb4#m\x14\xfe0\xbe\xd6\xeaB\x168As\xf5xUx\t\x0e\x96\x07\x94\x9f\xb3\x81\xeem\x86\xcc\x84\x8d\x94Q\xd3\xf7\x07\x9d\x8b\x13\xb2\xcc\xec}\xb5~m\x00\xfeu\xdb&\xf3N=\xc4\xa4\xc6\xd5\x9fD\xa2\xfaf1\x08\xe5H\xe1\xb7\x91\xac\xcd\x0eTyo]\xbe00\x9eZ=O\xde\x12\x0c\xb6\x06\xf5\xber\x06\xfalV!K~\x15\xb1/>\xa0\xf9\xa4\x96Z\xf9yf\xd9q\x1bd\x89&\x9c\xe6\xcfkE.\r_]\xe2\xa9B\x11{:\x19\xc8#\x18f\xab$,K\xca\xba\xeavN(\x16\x83\xe5CR\xa5\x11\xac\'\x06(t\x9b<\xa6\xca\xd1\'\x1c\x19\xb16#-\xd1E\x07\xa7\xfa\rI\x93\x9c\xad\xd9 \x1f|<\xa7%\xe9 ^\t\xee\x98\xa6\xa9wj\x8a\xddYP+\xeb\xb8\xee\xabJ\x132C\xba\xcf\x92#\x85\n\xd6\x96\xe4t\x8b\xef\x18\xf6\xb2Pw\rf\xe4\xd3U)\xcc-\x04m\x11\x87\xa5t\x1dSme\xf5w?\xdcM\xddm\xab\xf8\x1f\xfb\x8bPh\xcd[\xb0E\xeb\x98\x98\xb9o`\x97\nt\x92K\x16\x8f\x14\xd3=Zwtn^N\xc2N\x97\xfd4w\xce0\xd9\xc9s\xd2\xf1\x0f\xdb-X\xe8\xe3h\xf2\n\x13r\xf1#\xa7Q\xcd4\xa3\xe3s\xa6\xa3\xd7\xeb\x0c\xc9~\x18\x03\n\xd7Z\xe9ya\xd2#\x1ay\xd9\x15\x8e\x1b\x9f8=V\xec\x9f\xe8B0\xf6\x8b^\xc9\xf7\x8bS\xe3\x06i\x7f\x8d2v\x02\xa2\xd4\x12\xb1\x9d\x0e}\xd0\xcc\x1bL\x97\xf4\xfe\x84\xeeU\x9fP\xb4T\xe2\xa1/RE\xdc\xd2j[\xa2HF \xed\xa6\xe0\x8d\xe6\t\xd1\xc2\x0fb\xba\x15Q#{\xf2D\x02\xf3\xa7\xd8\xa5\xfc\xc8\xa3d%N\xdcX30\x18\xbe\xa1\x14\x89\xa1\x8aE\x11\x97\xa5&\x9f\xaab\x1d\xb6i\xef\x00<\xe8 V]\xd15!oR\x96\xafl!3\xb8Pm\xe2\t\xaf(\xe6W\xce~\x07!\xcb\x8c\t+\xc5\xe0\x97\xd18\xdd\xac\xef\x91e\xe4\x07+I\xcbfG\xc4\xfcO\xe2\xe4\x9a\xc0\xff\x86\xad\x1e\xad^D?\x86\x97+*\xdd\xa7V\xea \xf1y\xe8t\x9b\xce\xd1D \xc7\xcdd\x8f\x0c\xe6\xe1n@\xacK\xe6\xe6\x9e\x89\xdc\xf5`3?M\xda\x9en\x16$\xd7\xee\xe1\xd2\xa1\xe5Ih\x9e\x9e\x9c\xd6&\xfa$\xac\x84\x10n-\x19\x94\x97\xad\x88\xea}\xc6B\xd4\xef9\x1dO\x913T\xde\xba(\xef2\xec\xb1^b.!\x1d\x8b\xa5\xa3{\xbbqL`5A\x94\xfcx\xb2>\x89\tTx=a\x96I}\x95\xe5\xc5\xff\xc1\xfa\xd8\r\xe0\xdcB\xc8\x94\xb5\xd8\xe6N}\xca(>\x0c\xb8)b\x9fZ\x85FW\'\tf7=[MlQ_\x16NE\x89z_Q]\x14\xff\xda\x9e\xace\xe6\x8e\xf9\x15\xa9e\xca\xa0\x1e[\xc7\x14S\xafo\xec\x7f\xbc\x89\xa8?\x82\x11\xe76\xb9B\x11~\xaaG\xd8s\xdd&\x7f\xedD\xb40?DWJ\xdc,\x97\xfb\xd3\xf0\x067Je\xda\x17\xef\x90CK\xc2\xa3B\xab\xfb\xa1r\x1d9B+\xab\xec\t\xe6\xedB\xbfz\xdc\xac\x9a9\xc9\xc6\xad`\xba\x92\xc6\xccp\xbf\xc7\xce{\x87\x99\x8dy\xbe\n\xaf<\xff:N%S\xc2\'\x1a\xfb\x19\xcbZ\xd9F\x83\xb0\x87\x9cU\x1c\xf1E\x19E-\xfc\x90\xb1JY\x1b\x9f8=V\xec\x9f\xe8B0\xf6\x8b^\xc9\xf7\x8bS\xe3\x06i\x7f\x8d2v\x02\xa2\xd4\x12\xb1\x9d\x0e}\xfb\x80gN\x81M\xc5\\\xdb\xa3 \x0c[\xf5\x8d\xa8\xb2\xefb3\x8c\x8c\x07\xf3\xa3\xcdx\x15!\xe7{R\x96\x1b\x12g\xcf\x87@38\xb0j/#`\xcaS\xcc\xcd\xf0\xd8\xec\x83|\xbdY\xd9\x1bQ\x921~\x10{\x16"\xdb{\x9d\xbe\x06*\xc0\xc1\xe4=\xa0\xea\xd0\x9b\xab\xd1{\xb6o\x1a\x8bw\xc2\xb5\x8b\xaa@\xd6\x81t\x8cX\xe6rv4\xe4 TB\xb5]\x10\n\xfa*\x12\xc9>\xed\x16\x1d\xb6\x19\x9d\xb9dg\xe6\x99t\n8\xd1\xb2\x8b\xcd/\xee\xb0a\xfe\xa9D\xf7\x14\xd6o@\xc2\xa7D\x93\x18\xd0\n\xe8\xef\xff \xf9\xf4\'\xe1y\x08\x82\xd5K^\xa1\x15w\xf4\x95t3=\xbd\xbc\xd7,R\xf3E\xc8\'\xa3\xe5\xf6\xe1k\x07kXs\xe7d\x18\xae\xdb\xf2f^\xa5\xbea\xb9\x17\x88\x13vS\x1cl\x8c7\xf1\xdb\xa1\xd9j\x87x\xe8\xdfM\xaa\x13>q\xe0\xbbuD\'\xb9\x02.=\x1e\\)\x08(\x976\xde\x96\x91\xff\xb02\xe2U\xf7\x8a\x16D\xf0El\x8eQ]\xf8,\xd9\xffco\xa2\x92\xd9\xe8\xd3\x81\xe5\xd4\x0e\x0e\x1aP\x1e\x16\x1a\xf8\xb6\xc2\x8c\xb9\xe7O\x07)\xe5\x19\x87\xef\x92\x9c\x92S7s3?\x1a\x05\x90\x01W\xb8\xc1\xcd\xe7M\xd1\t\x9e%=\xd3MOj\nLJ\xa7\xa9\xd3:\xc5ok\xb5\x8b\xad\xdeo8\x12\n\xd9\xbd\x80\xa9\xe9\xc5\xc9 \xaeh\xfc\xfb\xac\x06z\x84Lm\xc3v\xedD\xd5]@>\xa1\xcc\xcd\xf0\xd8\xec\x83|\xbdY\xd9\x1bQ\x921~\x10-NrfMN\xb8\xbf\xe3{I\xcddq\x88\xd1\x92\x17\xe5z6Z\xb6\x94=.\xcd\xfe\xb4Of\xca\x82\xf3E\xab\xfa\x89@\xa8\x12\xaa\xbe\xd8\xecf1\xb2'
how parse the result search i receive something like this
{"result":"35b1748964af8a7c1d883e3a15a258de76740b4d50b1f1cf6d253a0760a2b3f97c0b4d48ddff6c133a3abf4d0338b10b0b31e2ec6db4bbaa03654e66a0b10b74a5ca3812b374a1a7faa0996ec5792c9883628a441081f43d5b5f0d958c000a2c9c183ab23741cf9899d14f49a69a5fed53118cdd22b6df95894078b27fb1c2508a78aa16e247de3a28ffd9462de710a18abc18851040208489081ae62929af3973e081e8944426a2c526dea1c3adfbff7cca06d8ed6a2c623af445a89187bc7f48d366c3423876ec43f9c5a06e48008c10ec0ac838a8af263e1237dde44ac8668e............................","code":200,"abroad":true}
/*
* 从NeteaseMusicWEB页扒下来的,国外请求加密内容解密方法.
* Authors:Netease
*
*/
function bNj(){
var yE = function (jR) { //定义函数yE,参数jR
if (jR < -128) { //若jR<-128
return yE(128 - (-128 - jR)) //返回yE(jR+256)
} else if (jR >= -128 && jR <= 127) { //若-128≤jR≤127
return jR //返回jR
} else if (jR > 127) { //若jR>127
return yE(-129 + jR - 127) //返回yE(jR-256)
} else { //否则(jR不为数字时)
throw new Error("1001") //错误1001
}
};
var bNi = function (jR, cq) { //定义函数bNi,参数jR,cq
return yE(jR + cq) //返回yE(jR+cq)
};
var bNh = function (QF, biw) { //定义函数bNh,参数(array)QF,(array)biw
if (QF == null) { //若QF==null
return null //返回null
}
if (biw == null) { //若biw==null
return QF //返回QF
}
var pJ = []; //定义(array)pJ
var bNg = biw.length; //定义bNg为biw长度
for (var i = 0, cF = QF.length; i < cF; i++) { //循环,次数为循环一次QF
pJ[i] = bNi(QF[i], biw[i % bNg])
}
return pJ
};
var bNc = function (QM) {
if (QM == null) {
return QM
}
var pJ = [];
var bMX = QM.length;
for (var i = 0, cF = bMX; i < cF; i++) {
pJ[i] = yE(0 - QM[i])
}
return pJ
};
var bMW = function (biP, Iv) {
biP = yE(biP);
Iv = yE(Iv);
return yE(biP ^ Iv)
};
var bvv = function (Iu, bjf) {
if (Iu == null || bjf == null || Iu.length != bjf.length) {
return Iu
}
var pJ = [];
var bMR = Iu.length;
for (var i = 0, cF = bMR; i < cF; i++) {
pJ[i] = bMW(Iu[i], bjf[i])
}
return pJ
};
var bvw = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
var bMO = function (ej) {
var ES = [];
ES.push(bvw[ej >>> 4 & 15]);
ES.push(bvw[ej & 15]);
return ES.join("")
};
var bMN = function (Cv) {
var cF = Cv.length;
if (Cv == null || cF < 0) {
return new String("")
}
var ES = [];
for (var i = 0; i < cF; i++) {
ES.push(bMO(Cv[i]))
}
return ES.join("")
};
var bvx = function (QT) {
if (QT == null || QT.length == 0) {
return QT
}
var bjy = new String(QT);
var pJ = [];
var cF = bjy.length / 2;
var cq = 0;
for (var i = 0; i < cF; i++) {
var nS = parseInt(bjy.charAt(cq++), 16) << 4;
var nP = parseInt(bjy.charAt(cq++), 16);
pJ[i] = yE(nS + nP)
}
return pJ
};
var bML = function (dT) {
if (dT == null || dT == undefined) {
return dT
}
var Il = encodeURIComponent(dT);
var Cv = [];
var bvy = Il.length;
for (var i = 0; i < bvy; i++) {
if (Il.charAt(i) == "%") {
if (i + 2 < bvy) {
Cv.push(bvx(Il.charAt(++i) + "" + Il.charAt(++i))[0])
} else {
throw new Error("1009")
}
} else {
Cv.push(Il.charCodeAt(i))
}
}
return Cv
};
var bME = function (uF) {
var cA = 0;
cA += (uF[0] & 255) << 24;
cA += (uF[1] & 255) << 16;
cA += (uF[2] & 255) << 8;
cA += uF[3] & 255;
return cA
};
var cfl = function (cA) {
var uF = [];
uF[0] = cA >>> 24 & 255;
uF[1] = cA >>> 16 & 255;
uF[2] = cA >>> 8 & 255;
uF[3] = cA & 255;
return uF
};
var bMz = function (eR, Vq, cF) {
var kb = [];
if (eR == null || eR.length == 0) {
return kb
}
if (eR.length < cF) {
throw new Error("1003")
}
for (var i = 0; i < cF; i++) {
kb[i] = eR[Vq + i]
}
return kb
};
var Vr = function (eR, Vq, Re, bMx, cF) {
if (eR == null || eR.length == 0) {
return Re
}
if (Re == null) {
throw new Error("1004")
}
if (eR.length < cF) {
throw new Error("1003")
}
for (var i = 0; i < cF; i++) {
Re[bMx + i] = eR[Vq + i]
}
return Re
};
var bMw = function (cF) {
var cH = [];
for (var i = 0; i < cF; i++) {
cH[i] = 0
}
return cH
};
var bMv = [82, 9, 106, -43, 48, 54, -91, 56, -65, 64, -93, -98, -127, -13, -41, -5, 124, -29, 57, -126, -101, 47, -1, -121, 52, -114, 67, 68, -60, -34, -23, -53, 84, 123, -108, 50, -90, -62, 35, 61, -18, 76, -107, 11, 66, -6, -61, 78, 8, 46, -95, 102, 40, -39, 36, -78, 118, 91, -94, 73, 109, -117, -47, 37, 114, -8, -10, 100, -122, 104, -104, 22, -44, -92, 92, -52, 93, 101, -74, -110, 108, 112, 72, 80, -3, -19, -71, -38, 94, 21, 70, 87, -89, -115, -99, -124, -112, -40, -85, 0, -116, -68, -45, 10, -9, -28, 88, 5, -72, -77, 69, 6, -48, 44, 30, -113, -54, 63, 15, 2, -63, -81, -67, 3, 1, 19, -118, 107, 58, -111, 17, 65, 79, 103, -36, -22, -105, -14, -49, -50, -16, -76, -26, 115, -106, -84, 116, 34, -25, -83, 53, -123, -30, -7, 55, -24, 28, 117, -33, 110, 71, -15, 26, 113, 29, 41, -59, -119, 111, -73, 98, 14, -86, 24, -66, 27, -4, 86, 62, 75, -58, -46, 121, 32, -102, -37, -64, -2, 120, -51, 90, -12, 31, -35, -88, 51, -120, 7, -57, 49, -79, 18, 16, 89, 39, -128, -20, 95, 96, 81, 127, -87, 25, -75, 74, 13, 45, -27, 122, -97, -109, -55, -100, -17, -96, -32, 59, 77, -82, 42, -11, -80, -56, -21, -69, 60, -125, 83, -103, 97, 23, 43, 4, 126, -70, 119, -42, 38, -31, 105, 20, 99, 85, 33, 12, 125];
var EH = 64;
var Rk = 64;
var bvB = 4;
var bMq = function (pu) {
var bvF = [];
if (pu == null || pu == undefined || pu.length == 0) {
return bMw(Rk)
}
if (pu.length >= Rk) {
return bMz(pu, 0, Rk)
} else {
for (var i = 0; i < Rk; i++) {
bvF[i] = pu[i % pu.length]
}
}
return bvF
};
var bMj = function (Ru) {
if (Ru == null || Ru.length % EH != 0) {
throw new Error("1005")
}
var VJ = [];
var cq = 0;
var bMh = Ru.length / EH;
for (var i = 0; i < bMh; i++) {
VJ[i] = [];
for (var j = 0; j < EH; j++) {
VJ[i][j] = Ru[cq++]
}
}
return VJ
};
var bMb = function (bvQ) {
var nS = bvQ >>> 4 & 15;
var nP = bvQ & 15;
var cq = nS * 16 + nP;
return bMv[cq]
};
var bvS = function (VU) {
if (VU == null) {
return null
}
var bvU = [];
for (var i = 0, cF = VU.length; i < cF; i++) {
bvU[i] = bMb(VU[i])
}
return bvU
};
var bLS = function (ED, pu) {
if (ED == null) {
return null
}
if (ED.length == 0) {
return []
}
if (ED.length % EH != 0) {
throw new Error("1005")
}
pu = bMq(pu);
var Wc = pu;
var Wd = bMj(ED);
var HL = [];
var bLR = Wd.length;
for (var i = 0; i < bLR; i++) {
var Wm = bvS(Wd[i]);
Wm = bvS(Wm);
var Wn = bvv(Wm, Wc);
var bLO = bNh(Wn, bNc(Wc));
Wn = bvv(bLO, pu);
Vr(Wn, 0, HL, i * EH, EH);
Wc = Wd[i]
}
var bvV = [];
Vr(HL, HL.length - bvB, bvV, 0, bvB);
var cF = bME(bvV);
if (cF > HL.length) {
throw new Error("1006")
}
var pJ = [];
Vr(HL, 0, pJ, 0, cF);
return pJ
};
var bLL = function (Rz, bN) {
if (Rz == null) {
return null
}
var bvW = new String(Rz);
if (bvW.length == 0) {
return []
}
var ED = bvx(bvW);
if (bN == null || bN == undefined) {
throw new Error("1007")
}
var pu = bML(bN);
return bLS(ED, pu)
};
this.bLB = function (Rz, bN) {
if(!bN){
var bN = "fuck~#$%^&*(458";
}
var bLA = bLL(Rz, bN);
var Ww = new String(bMN(bLA));
var RA = [];
var bLr = Ww.length / 2;
var cq = 0;
for (var i = 0; i < bLr; i++) {
RA.push("%");
RA.push(Ww.charAt(cq++));
RA.push(Ww.charAt(cq++))
}
return RA.join("")
}
};
var settmusic = (new bNj).bLB;
exports.decode = function(encodedData){
return JSON.parse(decodeURIComponent(settmusic(encodedData)));
}
然后我崩溃了
params:wMHl2NRSLZswkhm96ud1cYLR1O0P46owJB3I7gSILdx4oVOBpX2Ec7K141ov5q0NTjM0KrDIM9vM0gGRTqxbCTMSU2uIW5cwtSvA4tXC2VAUi0xMaj7g5cLcfQPcYHU1fw2ZrwHAT1P0KlL15LRIOwVC4ZnagrCNNx1K4AM7CpT+BNtl467cgveg8c5KWamhzSwF5PEl4JgRIymA+ourWxHw4nFp8sn7nLKnwCTOGvQ=
encSecKey:14108f6cad95fbef91ae8cd3f89bdc5a95e418a0408bb8e69f2c03eb01fefa02c107b7a205f9a0042c6e6f1c44c02aa60d1bb2a312d5d84f030eb99a72b49b4be0b2c6509d4d2485e2df7bafc6197b6acddb3ae66c63adab1ca99740a4c602bcc2682a56dd6fd645ad2236e75b33a73b98c345a919aefd95db9e3a267ed34c05
大大是如何知道加密的原信息的
hello,不知道是否能看到,但还是想问下列表的分页参数并没有获取到正确分页的结果
https://api.imjad.cn/cloudmusic/?type=playlist&id=146077451&offset=1&limit=20
比如offset=1&limit=20, playlist下tracks还是第一页,并且数据只有10条
c: Json 格式字符串,格式如:[{"id":3377030}]
这个我尝试了下,报参数错误。
但是找了个歌单id试了下 v3 的歌单没问题。
POST http://music.163.com/weapi/cloudsearch/get/web?csrf_token=
我想问下,像这样的API,是怎么获取他的明文参数
index.php内容是
<?php
require_once 'MusicAPI.php';
$api = new MusicAPI();
$result = $api->url('729396');
var_dump(json_decode($result));
?>
其他的都没改动,为什么会出错呢
如题。虽然请求头里面有Accept-Encoding: gzip一句,但经我试验返回的数据不能用gzip解压缩(没有头1F 8B),并且去掉这一句后返回的数据没有变化,所以我猜测应该采用了另一种加密方式
这个接口用于获取用户常听排行榜。
public function record($uid, $type=1){
$url='http://music.163.com/weapi/v1/play/record?csrf_token=';
$data=array(
'uid'=>$uid,
'type'=>$type,
'csrf_token'=>'',
);
return $this->curl($url,$this->prepare($data));
}
type=1时只返回weekData, type=0时返回allData。建议加入
some songs return null result
{"data":[{"id":1045123,"url":null,"br":0,"size":0,"md5":null,"code":404,"expi":1200,"type":null,"gain":0.0,"fee":0,"uf":null,"payed":0,"flag":0,"canExtend":false}],"code":200}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.