本文主要幫助解決探索一下網易雲私信功能
一 需求
測試一下私信功能接口
二 分析請求
參考之前的那篇網易雲音樂博客
1.找到加密前json
2.跳傳到控制檯打印i7b內容得到
3.代碼就按之前的改一下cookie寫死(時效性很強沒必要去掉登入接口)
4.參數寫死第一次發送沒問題,但是第二次發送可以得到,基本上是checkToken相關
{"code":250,"msg":"發送私信異常","data":{"dialog":{"title":"風險提示","subtitle":"請您嘗試切換網絡或設備再嘗試操作哦~","buttonMsg":"查看詳情","buttonUrl":"http://163.lu/EmUzy2"}}}
5.後續發現跟上面請求相關看js太耗時(目前還沒找到checkToken生成規律) 。
三 實戰分析
經過上面分析此方法目前還行不通。
回覆說可以發送私信但我看了源碼 找到加密前json與我的不一樣還能發送成功。
我就修改module/send_text.js 打印加密前json, util/request.js打開request debug,如下圖所示
仔細點的小夥伴應該發現了哪裏不同
UA用的是老的APP的user-agent(說明網易雲參數驗證方式根據不同UA是不同的)
還有個重點cookie 後面追加 os=pc;指明來源
四 代碼實戰
詳細代碼不寫了,補充重點代碼
String first_param = "{\"type\":\"text\",\"msg\":\"1\",\"userIds\":\"[\\\"xxxx\\\"]\"}";
httpPost.addHeader("User-Agent","Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36");
httpPost.addHeader("cookie",cookie+";os=pc");