摘要:需要的數(shù)據(jù)就是這個(gè)快遞軌跡,看到上面的好像沒(méi)什么問(wèn)題,挺容易的,這還有什么比這爽的,趕緊使用請(qǐng)求一波。由于說(shuō)過(guò)了,就不多說(shuō)了,突破了繼續(xù)刷新也會(huì)遇到一些未定義的,也是同樣扣代碼,就不多說(shuō)了,這里說(shuō)另一個(gè)。
原本昨天就要發(fā)文章的了,由于之前的pdd文章被投訴了,刪除了,影響心情的同時(shí)也不敢亂發(fā)文章了,所以就暫時(shí)歇了一天,也改了另外一個(gè)網(wǎng)站,就是今天的物流網(wǎng)站。如果大家某天看不到我發(fā)文了,估計(jì)我也是被舉報(bào)完了,到時(shí)想要看的可以去我的GitHub上看。
獻(xiàn)上GitHub:https://github.com/SergioJune...
對(duì)你有用的話,希望能點(diǎn)個(gè)star,謝謝
今天網(wǎng)站:https://www.17track.net/zh-cn
這是個(gè)物流網(wǎng)站,就是查詢物流的,今天要做的就是根據(jù)單號(hào)查詢物流,廢話不多說(shuō),直接肝。
1. 找到所需數(shù)據(jù)的 URL 請(qǐng)求這里我們查詢一個(gè)單號(hào),也可以批量查詢,參數(shù)都差不多,長(zhǎng)度變了而已,所以演示就只查詢一個(gè)單號(hào)。
打開(kāi)了開(kāi)發(fā)者工具你慢慢找,很容易就找到這個(gè)請(qǐng)求。
需要的數(shù)據(jù)就是這個(gè)快遞軌跡,看到上面的 formdata 好像沒(méi)什么問(wèn)題,挺容易的,這還有什么比這爽的,趕緊使用 python 請(qǐng)求一波。
結(jié)果返回了這個(gè),果然沒(méi)有想象中的那么簡(jiǎn)單,估計(jì)又是在cookie上面做了反爬,那我們就加上cookie試試
果不其然,真的成功了,經(jīng)過(guò)我的測(cè)試,發(fā)現(xiàn)需要的cookie 鍵是??,那接下來(lái)就是看怎么生成的了。
2. 尋找生成位置上面知道了是哪個(gè) cookie 反爬的,最簡(jiǎn)單的尋找就是全局搜索這個(gè)參數(shù)來(lái)看看有沒(méi)有線索。
果然有,而且文件名字和請(qǐng)求的路徑名有幾分相似,按經(jīng)驗(yàn)來(lái)說(shuō)八九不離十就是這個(gè)了,點(diǎn)擊進(jìn)去看看。
格式化就可以看到上圖的代碼,一眼看去,這代碼很像我之前這篇請(qǐng)求網(wǎng)頁(yè)時(shí),怎么給我返回了一段 JavaScript 代碼,都是前面一個(gè)大數(shù)組,然后在一個(gè)地方把這個(gè)數(shù)組的順序,然后通過(guò)一個(gè)函數(shù)來(lái)將這個(gè)數(shù)組的元素來(lái)解密成正常的函數(shù)名。接著就是檢測(cè)你有沒(méi)有展開(kāi)代碼之類的,展開(kāi)了就會(huì)內(nèi)存爆破,具體的都可以看看我剛說(shuō)的這篇文章。
有了上次的經(jīng)驗(yàn),我就直接在瀏覽器上格式化直接調(diào)試了,不把代碼復(fù)制到本地運(yùn)行了。
了解了這么多,就是開(kāi)始調(diào)試了,由于我們需要找的 cookie確定是在這個(gè)文件內(nèi)生成,但是還不知道在哪生成,所以需要調(diào)試下。
涉及到 cookie, 需要先把瀏覽器的cookie清除才行
點(diǎn)擊?clear site data?即可清除,不放心的就點(diǎn)多幾次。
接著就是在調(diào)試欄的右邊的 watch 添加我們監(jiān)聽(tīng)的變量,我們需要監(jiān)聽(tīng) cookie 的變化,所以點(diǎn)擊 + 號(hào)添加 document.cookie 即可。
接著打斷點(diǎn)的位置就在我們搜索到 cookie 值的位置上添加即可
接下來(lái)就是刷新網(wǎng)頁(yè),等待程序跳到斷點(diǎn)的位置
這時(shí)看到 cookie 的值是空的,在 application 上看的 cookie 也是空的
接著就是按下斷點(diǎn)執(zhí)行下一行語(yǔ)句,不會(huì)的先自行百度,這個(gè)調(diào)試肯定得學(xué)會(huì)的,這里就不多說(shuō)了,或者我過(guò)兩天有時(shí)間寫篇 chrome 調(diào)試供大家參考下。
現(xiàn)在就是漫長(zhǎng)的調(diào)試尋找加密的時(shí)間了,經(jīng)過(guò)我的查找,很快就可以看到這個(gè)了。
下面的那句明顯就是設(shè)置 cookie 的,可以自己復(fù)制語(yǔ)句到 console 上運(yùn)行一次
這樣子就找到生成位置了,現(xiàn)在就是查看右邊的調(diào)用棧,查看是在哪個(gè)地方開(kāi)始執(zhí)行的,看看他們之間的調(diào)用關(guān)系。
3. 把生成的參數(shù)代碼扣出來(lái)在上面的cookie 生成可以看到是一個(gè)數(shù)組,然后使用 join() 來(lái)連接起來(lái)的
我們可以觀察這個(gè)數(shù)組在哪里生成和賦值的,也通過(guò)調(diào)用??梢钥吹絽?shù)生成地方是在這里
我們可以先把這個(gè)語(yǔ)句所在的函數(shù)扣出來(lái)
發(fā)現(xiàn)里面的函數(shù)有些 document 對(duì)象,又因?yàn)檫@個(gè)是主函數(shù),所以可以修剪下,把那些判斷語(yǔ)句和捕捉異常的都給去掉,就是在原文件中看判斷語(yǔ)句的真假運(yùn)行的哪個(gè)語(yǔ)句就保留,而正常運(yùn)行不會(huì)產(chǎn)生異常,所以把處理異常的也給去掉,就成了這個(gè)樣子。
然后直接使用瀏覽器打開(kāi)運(yùn)行查看錯(cuò)誤
然后對(duì)比原文件中的參數(shù) ,發(fā)現(xiàn)這個(gè)是我們傳的 formdata,所以為了測(cè)試先賦值一個(gè)即可。
接著是這個(gè)錯(cuò)誤,這個(gè)未定義,也是在原文件中看他的定義處即可??梢赃@樣看
點(diǎn)擊上面箭頭所指的地方即可到達(dá)定義。
直接到達(dá)這里,看到了他的定義,所以直接從這里扣出來(lái)到最后定義完之處即可,再次刷新,看到變成了另一個(gè)錯(cuò)誤
也是在原文件中找定義即可
這是個(gè)解密函數(shù),就是我上文說(shuō)的將加密數(shù)組元素解密成正常的函數(shù)名,直接扣出來(lái)即可,同時(shí)我們還需要找個(gè)數(shù)組,就是第一行的。
再次刷新,瀏覽器卡了起來(lái),甚至出現(xiàn)了崩潰
這就是所謂的內(nèi)存爆破,這時(shí)因?yàn)槔锩嬗袀€(gè)函數(shù)檢測(cè)到了你展開(kāi)了代碼,所以就來(lái)內(nèi)存爆破,這個(gè)都是我在請(qǐng)求網(wǎng)頁(yè)時(shí),怎么給我返回了一段 JavaScript 代碼這里得到經(jīng)驗(yàn)的,如果你需要調(diào)試尋找的話,可以先在我們扣出來(lái)的代碼隨便寫個(gè)錯(cuò)誤,在文件代碼出現(xiàn),然后在第一行加上斷點(diǎn)進(jìn)行調(diào)試即可,剩下的就是自己一步一步調(diào)試找出內(nèi)存爆破位置了。
由于說(shuō)過(guò)了,就不多說(shuō)了,突破了繼續(xù)刷新也會(huì)遇到一些未定義的,也是同樣扣代碼,就不多說(shuō)了,這里說(shuō)另一個(gè)。
這里明明已經(jīng)是定義了,卻顯示未定義,打了斷點(diǎn)一看,原來(lái)是函數(shù)名字都是亂碼的
這是因?yàn)槲覀冊(cè)诘谝恍卸x的數(shù)組是亂序的,需要還原下,這個(gè)需要自己一步一步調(diào)試查看原文的,我這里就直接說(shuō)了
里面可以打上斷點(diǎn)查看即可。
剩下的還是重復(fù)原來(lái)的步驟,查看錯(cuò)誤,扣代碼即可,由于篇幅這里就不多說(shuō)了,有問(wèn)題可以去公眾號(hào)「日常學(xué)python」菜單欄加我微信拉進(jìn)交流群交流。
4. 用 Python 運(yùn)行獲取結(jié)果這里還是使用 PyExecjs 庫(kù)來(lái)執(zhí)行 JS 獲取cookie值,如果還原成python 語(yǔ)言成本太大了,不適合。
代碼也沒(méi)有什么的,具體的可以去 github:https://github.com/SergioJune...?上面看
最后這篇文章昨天就想發(fā)了,無(wú)耐太累,就一直拖到今天了,有點(diǎn)對(duì)不起讀者,還有 pdd 的已經(jīng)被刪除了,想看的可以去 github 上看。
最后,原創(chuàng)不易,希望大家多點(diǎn)贊多轉(zhuǎn)發(fā)分享給你的好友,點(diǎn)贊轉(zhuǎn)發(fā)越多,我就寫得越多?。?!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/43519.html
摘要:做過(guò)跨境電商項(xiàng)目的同學(xué)都知道,除了訂單,支付和購(gòu)物車外還有一個(gè)很頭痛的模塊物流軌跡追蹤。 做過(guò)跨境電商項(xiàng)目的同學(xué)都知道,除了訂單,支付和購(gòu)物車外還有一個(gè)很頭痛的模塊-物流軌跡追蹤。 通常來(lái)說(shuō)企業(yè)為了節(jié)省成本采用的物流渠道都是五花八門的,DHl、EMS、Epacket、USPS...聽(tīng)起來(lái)就讓人頭疼;誰(shuí)讓咱們是做技術(shù)的呢,為了解決各家接口數(shù)據(jù)格式不一致的問(wèn)題,特地花了一段時(shí)間做了一個(gè)co...
摘要:由此看出,云計(jì)算市場(chǎng)的競(jìng)爭(zhēng)格局還未完全確定。尤其在現(xiàn)階段,企業(yè)級(jí)業(yè)務(wù)進(jìn)入需求爆發(fā)期,能快速抓住企業(yè)上云核心需求的大型云計(jì)算廠商更有可能快速搶占市場(chǎng)份額,實(shí)現(xiàn)彎道超車。近年來(lái),在企業(yè)數(shù)字化轉(zhuǎn)型的熱潮下,我國(guó)云計(jì)算發(fā)展正式迎來(lái)需求爆發(fā)期。隨著云計(jì)算的應(yīng)用普及,越來(lái)越多的企業(yè)開(kāi)始擁抱云計(jì)算服務(wù),云計(jì)算或?qū)⒂?019年全面殺入企業(yè)級(jí)市場(chǎng)。中國(guó)云計(jì)算市場(chǎng)規(guī)模和集中度增加,但市場(chǎng)競(jìng)爭(zhēng)格局仍未確定據(jù)億歐智...
摘要:基本概念云物流概述云物流是基于云計(jì)算應(yīng)用模式的物流。運(yùn)輸條件的改善基于云計(jì)算的云物流通過(guò)物流平臺(tái)的構(gòu)建在資源池內(nèi)實(shí)現(xiàn)信息的共享,同時(shí)能高效地找到匹配的訂單,進(jìn)而根據(jù)訂單來(lái)配送。0 引言國(guó)家標(biāo)準(zhǔn)《物流術(shù)語(yǔ)》指出:物流是物品的實(shí)體流動(dòng)過(guò)程,物品從供應(yīng)地到接受地的過(guò)程中包含著眾多的環(huán)節(jié),如對(duì)物品進(jìn)行包裝、流通加工、配送,對(duì)物流信息進(jìn)行處理,進(jìn)而對(duì)實(shí)體進(jìn)行儲(chǔ)存、搬運(yùn)、運(yùn)輸、裝卸等,直至送到消費(fèi)者手中...
摘要:能否保證原箱發(fā)貨為防止運(yùn)輸途中的癟罐,在倉(cāng)庫(kù)打包的過(guò)程中,會(huì)拆掉原箱對(duì)奶粉罐挨個(gè)進(jìn)行減震包裝。稍后會(huì)有客服人員聯(lián)系客戶協(xié)商處理破損產(chǎn)品。 小紅馬常見(jiàn)問(wèn)題 平臺(tái)介紹 什么是小紅馬? 小紅馬是一個(gè)擁有優(yōu)質(zhì)的供應(yīng)鏈、IT、資金等核心資源,基于對(duì)中國(guó)母嬰行業(yè)的深刻洞察,全新構(gòu)建的母嬰用品全品類一站式采購(gòu)平臺(tái)。 小紅馬對(duì)門店具備哪些優(yōu)勢(shì)? *小紅馬平臺(tái)貨源來(lái)自廠家直供與國(guó)代商渠道,不同于其他平臺(tái)...
閱讀 1649·2021-10-14 09:42
閱讀 3915·2021-09-07 09:59
閱讀 1368·2019-08-30 15:55
閱讀 639·2019-08-30 11:17
閱讀 3400·2019-08-29 16:06
閱讀 569·2019-08-29 14:06
閱讀 3197·2019-08-28 18:14
閱讀 3718·2019-08-26 13:55