還是老規(guī)矩
餓了么 8.23.2 fiddler4 xposed postman
餓了么版本號(hào)
首先吧餓了么的源代碼編譯出來待用 然后把fiddler打開準(zhǔn)備調(diào)試開始找到自己需要的url痹届,
我需要的是"https://restapi.ele.me/swarm/shops/recommend?
用postman調(diào)試了一下 發(fā)現(xiàn)和原來一樣垃圾 沒有一個(gè)加密參數(shù) 主要的就是需要登錄驗(yàn)證 主要就是一個(gè)繞過登錄 我這邊想到的辦法就是 手動(dòng)注冊(cè)然后拿cookie (大家如果有時(shí)間也可以自己寫一個(gè)注冊(cè)程序) 然后爬數(shù)據(jù)
首先創(chuàng)建一個(gè)隊(duì)列里面存已經(jīng)注冊(cè)好的cookie
初始化
下面開多線程爬的時(shí)候來取數(shù)據(jù)
主要code
每次發(fā)請(qǐng)求的時(shí)候去隊(duì)列里面拿一個(gè)登陸cookie,拿到之后開始請(qǐng)求如果請(qǐng)求成功將cookie從新放入隊(duì)列里面
進(jìn)入解析階段 如果失敗就不把cookie放入隊(duì)列里面 并且從新請(qǐng)求 如果在可接受的次數(shù)里面都還是沒有拿到數(shù)據(jù)就放棄這次請(qǐng)求
切忌不要一直請(qǐng)求巾表,容易造成死循環(huán) 還有在有些情況下拿到返回值之后可能不管用什么編碼格式都是亂碼 但是在工具上面測(cè)試的時(shí)候就是正確的這個(gè)時(shí)候我們就需要考慮是不是返回的gzip格式的數(shù)據(jù)
可以用 java.util.zip.GZIPInputStream 包裝一下在來看
數(shù)據(jù)
在這次爬數(shù)據(jù)中還用了一個(gè)爬蟲技巧地圖打點(diǎn) 點(diǎn)越密集得到的數(shù)據(jù)完整性越高
地圖打點(diǎn)的數(shù)據(jù)