app接口,如何保證是由app內部調用而非外部模擬post請求調用。


在爬蟲快手主播信息的時候,發現只要我改動一下參數,比如第一頁 page=1的時候,需要爬下一頁,把page改為2發現提示sign驗證失敗了

也就是說,快手在開發的時候考慮了有人抓包到接口后,通過修改參數的方式繼續獲取下一頁(或者是其他操作,總結就是防止用戶截斷請求修改數據包后提交的做法)

我估計做法大概是在調用接口前,先對所有參數進行一個md5,當用戶改一下值后,md5 出來的值就不對了

然后具體它md5了哪些值,沒法得知,所以,尼瑪靠接口采集有點懸。。。。

但是后來發現,每次我發送同一個參數過去,快手都給我返回了不同的主播列表,這就有點尷尬了。。。。

反正我是想得到主播列表,不管你給我返回什么列表,只要信息對就可以了。。。。然后就繼續采了。。。。。。

誰知道他sign是怎么計算的啊

對apk的反編譯不熟悉,有知道的告知一下。

由此想到之前自己開發的app,一直在苦於怎么樣保證app的接口不被抓包后直接訪問。

我當時的做法是,每次請求,對於重要接口,都加了一個參數叫做 timestamp,然后自己寫了一個方法對這個字符串進行加密,然后一同傳過來。

對於超過5分鍾的timestamp,直接丟棄,用過之后將timestamp保存到數據庫,當收到一個請求后,先查詢該timestamp是否已經被使用,如果是,則返回錯誤。正確的情況下才繼續執行相關邏輯。

這種設計,比起快手app那樣加sign的驗證,實現更為復雜,並且數據數據持久支持(例如數據庫)。因為這個timestamp是否可用,基於數據庫中是否存在。

所以,以后在寫接口的時候,可以仿造這種寫法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM