得物数据抓取+参数加密解析
跟新了內(nèi)容
新內(nèi)容:更新的內(nèi)容
兩邊來(lái)回寫(xiě)太麻煩了,主要是有圖片。大家點(diǎn)進(jìn)去看吧
環(huán)境:python 3.6
腳本最后一次修改于 2021-08-27
本次解析的參數(shù)為sign,解析的來(lái)源為微信小程序源碼和H5頁(yè)面JS文件
咱也不廢話,直接上干活
應(yīng)產(chǎn)品的需求要求需要相關(guān)的品類(lèi)數(shù)據(jù)(詳情數(shù)據(jù)也驗(yàn)證過(guò),都是相同的方式,沒(méi)問(wèn)題的)
需要獲取產(chǎn)品列表頁(yè)的數(shù)據(jù),通過(guò)兩個(gè)post接口獲取。
接口1【https://app.poizon.com/api/v1/h5/search/fire/commodity/detail_brand"】
參數(shù):{“sign”: 加密參數(shù), “brandId”: 品牌ID,“l(fā)astId”: 當(dāng)前頁(yè)最后的數(shù)(page*pageSize),“sortType”: 2,“sortMode”: 1, “l(fā)imit”: pageSize,“categoryIds”: [],“debugAgg”: True,“aggregation”: True}
接口2【https://app.dewu.com/api/v1/h5/index/fire/shopping-tab】
參數(shù):{“sign”: 參數(shù), “tabId”: 分類(lèi)ID, “l(fā)imit”: pageSize, “l(fā)astId”: 當(dāng)前頁(yè)最后的數(shù)}
這兩個(gè)只是我用到的,在你實(shí)際情況中,可能并沒(méi)不會(huì)使用到這兩個(gè),但一通百通,你明白的。
下面講一下sign這個(gè)參數(shù)的由來(lái),和注意事項(xiàng)。
你捕獲到的接口參數(shù)結(jié)構(gòu)順序是什么樣的,就是什么樣的,順序不要變。因?yàn)檫@個(gè)順序和sign的由來(lái)有關(guān)。
接口訪問(wèn)有IP風(fēng)控,很?chē)?yán)格。如果只是技術(shù)研究和學(xué)習(xí),低頻率的訪問(wèn)即可。如果是其他,請(qǐng)自行開(kāi)動(dòng)腦筋。
pageSize也就是參數(shù)里limit,固定是20,改成其他的沒(méi)啥用。
先說(shuō)下接口1的sign
這個(gè)接口是在H5中捕獲到的相關(guān)接口。通過(guò)JS斷點(diǎn)的形式跟蹤,發(fā)現(xiàn)在進(jìn)入到發(fā)送請(qǐng)求前,參數(shù)中還是沒(méi)有sign這個(gè)值的,因此斷定,sign是在發(fā)送請(qǐng)求這個(gè)操作力,發(fā)送前以固定形式進(jìn)新的加密。
繼續(xù)斷點(diǎn),跟蹤方法,找到最后的加密結(jié)果前的內(nèi)容
“aggregationtruebrandId{tp}categoryIdsdebugAggtruelastId{lastId}limit{limit}sortMode1sortType2048a9c4943398714b356a696503d2d36”
細(xì)心的朋友可以發(fā)現(xiàn)這個(gè)內(nèi)容可以分為兩個(gè)部分
f"aggregationtruebrandId{tp}categoryIdsdebugAggtruelastId{lastId}limit{limit}sortMode1sortType2"
“048a9c4943398714b356a696503d2d36”
對(duì)。你沒(méi)有看錯(cuò),就是參數(shù)字符串化后+固定字符串。然后通過(guò)加密生成。
ps:加密我是試出來(lái)的。因?yàn)楹苊黠@是32位小寫(xiě)的,肯定第一想法是md5,試驗(yàn)下,確實(shí)是md5.
這也就是為啥每一次訪問(wèn)都是的參數(shù)只要變化,sign就無(wú)法二次使用的原因。
PostMan測(cè)試請(qǐng)求成功。
另外再提一次,網(wǎng)站的頻繁訪問(wèn)接入的是極驗(yàn)滑塊。
接著是接口2的sign
有了接口1的經(jīng)驗(yàn),接口2的思路也很明確了。
獲取手機(jī)小程序源碼。源碼通過(guò)工具反編譯。(百度吧,太多小程序怎么獲取和反編譯的)
反編譯后生成了三個(gè)js文件和一個(gè)json文件,json文件確認(rèn)是該小程序。直接打開(kāi)
因?yàn)樵蹅冎朗莔d5加密,能找到md5關(guān)鍵字的,切格式相同的,就是app-service.js
因此,我們知道到小程序里的參數(shù)組合中的固定字符串是什么了。
19bc545a393a25177083d4a748807cc0
根據(jù)接口1反推下接口2的sign組成應(yīng)該是
f"lastId{lastId}limit{pageSize}tabId{tp}19bc545a393a25177083d4a748807cc0"
PostMan驗(yàn)證下,沒(méi)有問(wèn)題。
因?yàn)槭菚r(shí)隔好幾天的文章創(chuàng)作,一些步驟截圖我就不在動(dòng)手了。還是因?yàn)閮?nèi)容不是太難,只要細(xì)心點(diǎn),多思考下都能搞定。
加油,打工人,咱們下一次再見(jiàn)。
PS:這里不保證官方會(huì)不會(huì)進(jìn)行更新,更新后固定參數(shù)會(huì)不會(huì)改變。也不保證各位看官看到并學(xué)習(xí)使用的時(shí)候,還能否正常使用到。
但只要大的套路不變,其實(shí)也就那樣。
加油~
總結(jié)
以上是生活随笔為你收集整理的得物数据抓取+参数加密解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 仿蜻蜓FM专辑页面滑动特效
- 下一篇: 解决PHP项目显示“该网页无法正常运作”