最近在做网易云音乐的项目发现了个问题,登录接口总是-460?一开始以为真的是网络拥挤,然后去postman上试一下发现通了,然后再转到项目请求,发现又好了,心想可能接口不稳定吧。但后来我发现根本不是这么回事,基本上你项目只要重启一遍再去登录,保证-460,但只要postman去请求一下,项目也通了,并且postman是一直通的,这我直接疑惑??在网上搜了很久都没解决后,我也只能硬着头皮自己去看代码。
首先,我先看了下服务器端登录接口代码,并打印了下失败后传的参数
这里是登录的接口代码 NeteaseCloudMusicApi/module/login_cellphone.js
let result =awaitrequest('POST',`https://music.163.com/api/login/cellphone`,
data,{crypto:'weapi',ua:'pc',cookie: query.cookie,proxy: query.proxy,realIP: query.realIP,},)
然后用postman成功请求后打印参数
这里发现cookie多了好几个参数,这里说明下,因为我验证码每天请求次数上限了,这里用的是密码登录,若果用验证码登录和上面失败的情况对比发现会多一个
NMTID
参数,我也不知道这个是什么,于是我就直接拿到这个值,然后手动赋值写死
query.cookie.NMTID='xxxxxxxxxxxxxxxxx'let result =awaitrequest('POST',`https://music.163.com/api/login/cellphone`,
data,{crypto:'weapi',ua:'pc',cookie: query.cookie,proxy: query.proxy,realIP: query.realIP,},)
重启后端,发现项目接口居然通了,也不会报错-460了。
然后为了验证这个
NMTID
参数里的代码是不是我的账号独有的代码,我还用了别人的手机号登陆了下,发现也能登上。
至此,登录问题暂时算是解决了,当然我也不知道那个
NMTID
是不是动态的,会不会失效。但至少自己开发用倒是没什么问题了,如果不能用了就postman请求获取一下。
结尾
这里想说一下,以上全是我自己瞎研究出来的,具体什么是干什么的我也不清楚。如果哪里有错误,真心求教。如果有大神知道正确的解决方法,希望能指点一二啊!!!
版权归原作者 远枫 所有, 如有侵权,请联系我们删除。