還是老規(guī)矩
餓了么 8.23.2 fiddler4 xposed postman

餓了么版本號
首先吧餓了么的源代碼編譯出來待用 然后把fiddler打開準(zhǔn)備調(diào)試開始找到自己需要的url,
我需要的是"https://restapi.ele.me/swarm/shops/recommend?
用postman調(diào)試了一下 發(fā)現(xiàn)和原來一樣垃圾 沒有一個加密參數(shù) 主要的就是需要登錄驗證 主要就是一個繞過登錄 我這邊想到的辦法就是 手動注冊然后拿cookie (大家如果有時間也可以自己寫一個注冊程序) 然后爬數(shù)據(jù)
首先創(chuàng)建一個隊列里面存已經(jīng)注冊好的cookie

初始化
下面開多線程爬的時候來取數(shù)據(jù)

主要code
每次發(fā)請求的時候去隊列里面拿一個登陸cookie,拿到之后開始請求如果請求成功將cookie從新放入隊列里面
進(jìn)入解析階段 如果失敗就不把cookie放入隊列里面 并且從新請求 如果在可接受的次數(shù)里面都還是沒有拿到數(shù)據(jù)就放棄這次請求
切忌不要一直請求,容易造成死循環(huán) 還有在有些情況下拿到返回值之后可能不管用什么編碼格式都是亂碼 但是在工具上面測試的時候就是正確的這個時候我們就需要考慮是不是返回的gzip格式的數(shù)據(jù)
可以用 java.util.zip.GZIPInputStream 包裝一下在來看

數(shù)據(jù)
在這次爬數(shù)據(jù)中還用了一個爬蟲技巧地圖打點 點越密集得到的數(shù)據(jù)完整性越高

地圖打點的數(shù)據(jù)