0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python爬蟲:尋找并分析百度云的轉(zhuǎn)存api

馬哥Linux運(yùn)維 ? 來源:未知 ? 作者:李倩 ? 2018-03-31 09:18 ? 次閱讀

尋找并分析百度云的轉(zhuǎn)存api

首先你得有一個(gè)百度云盤的賬號,然后登錄,用瀏覽器(這里用火狐瀏覽器做示范)打開一個(gè)分享鏈接。F12打開控制臺進(jìn)行抓包。手動(dòng)進(jìn)行轉(zhuǎn)存操作:全選文件->保存到網(wǎng)盤->選擇路徑->確定。點(diǎn)擊【確定】前建議先清空一下抓包記錄,這樣可以精確定位到轉(zhuǎn)存的api,這就是我們中學(xué)時(shí)學(xué)到的【控制變量法】2333。

可以看到上圖中抓到了一個(gè)帶有 “transfer” 單詞的 post 請求,這就是我們要找的轉(zhuǎn)存(transfer)api 。接下來很關(guān)鍵,就是分析它的請求頭和請求參數(shù),以便用代碼模擬。

點(diǎn)擊它,再點(diǎn)擊右邊的【Cookies】就可以看到請求頭里的 cookie 情況。

cookie分析

因?yàn)檗D(zhuǎn)存是登錄后的操作,所以需要模擬登錄狀態(tài),將與登錄有關(guān)的 cookie 設(shè)置在請求頭里。我們繼續(xù)使用【控制變量法】,先將瀏覽器里關(guān)于百度的 cookie 全部刪除(在右上角的設(shè)置里面,點(diǎn)擊【隱私】,移除cookies。具體做法自己百度吧。)

然后登錄,右上角進(jìn)入瀏覽器設(shè)置->隱私->移除cookie,搜索 "bai" 觀察 cookie 。這是所有跟百度相關(guān)的 cookie ,一個(gè)個(gè)刪除,刪一個(gè)刷新一次百度的頁面,直到刪除了 BDUSS ,刷新后登錄退出了,所以得出結(jié)論,它就是與登錄狀態(tài)有關(guān)的 cookie 。

同理,刪除掉 STOKEN 后,進(jìn)行轉(zhuǎn)存操作會(huì)提示重新登錄。所以,這兩個(gè)就是轉(zhuǎn)存操作所必須帶上的 cookie 。

弄清楚了 cookie 的情況,可以像下面這樣構(gòu)造請求頭。

除了上面說到的兩個(gè) cookie ,其他的請求頭參數(shù)可以參照手動(dòng)轉(zhuǎn)存時(shí)抓包的請求頭。這兩個(gè) cookie 預(yù)留出來做參數(shù)的原因是 cookie 都是有生存周期的,過期了需要更新,不同的賬號登錄也有不同的 cookie 。

參數(shù)分析

接下來分析參數(shù),點(diǎn)擊【Cookies】右邊的【Params】查看參數(shù)情況。如下:

上面的query string(也就是?后跟的參數(shù))里,除了框起來的shareid、from、bdstoken需要我們填寫以外,其他的都可以不變,模擬請求的時(shí)候直接抄下來。

前兩個(gè)與分享的資源有關(guān),bdstoken與登錄的賬號有關(guān)。下面的form data里的兩個(gè)參數(shù)分別是資源在分享用戶的網(wǎng)盤的所在目錄和剛剛我們點(diǎn)擊保存指定的目錄。

所以,需要我們另外填寫的參數(shù)為:shareid、from、bdstoken、filelist 和 path,bdstoken 可以手動(dòng)轉(zhuǎn)存抓包找到,path 根據(jù)你的需要自己定義,前提是你的網(wǎng)盤里有這個(gè)路徑。其他三個(gè)需要從分享鏈接里爬取,這個(gè)將在后面的【爬取shareid、from、filelist,發(fā)送請求轉(zhuǎn)存到網(wǎng)盤】部分中進(jìn)行講解。

搞清楚了參數(shù)的問題,可以像下面這樣構(gòu)造轉(zhuǎn)存請求的 url 。

爬取shareid、from、filelist,發(fā)送請求轉(zhuǎn)存到網(wǎng)盤

以上面這個(gè)資源鏈接為例(隨時(shí)可能被河蟹,但是沒關(guān)系,其他鏈接的結(jié)構(gòu)也是一樣的),我們先用瀏覽器手動(dòng)訪問,F(xiàn)12 打開控制臺先分析一下源碼,看看我們要的資源信息在什么地方??刂婆_有搜索功能,直接搜 “shareid”。

定位到4個(gè)shareid,前三個(gè)與該資源無關(guān),是其他分享資源,最后一個(gè)定位到該 html 文件的最后一個(gè)標(biāo)簽塊里。雙擊后可以看到格式化后的 js 代碼,可以發(fā)現(xiàn)我們要的信息全都在里邊。如下節(jié)選:

可以看到這兩行

yunData.PATH 只指向了一個(gè)路徑信息,完整的 filelist 可以從 yunData.FILEINFO 里提取,它是一個(gè) json ,list 里的信息是Unicode編碼的,所以在控制臺看不到中文,用Python代碼訪問并獲取輸出一下就可以了。

直接用request請求會(huì)收獲 404 錯(cuò)誤,可能是需要構(gòu)造請求頭參數(shù),不能直接請求,這里博主為了節(jié)省時(shí)間,直接用selenium的webdriver來get了兩次,就收到了返回信息。第一次get沒有任何 cookie ,但是baidu 會(huì)給你返回一個(gè)BAIDUID ,在第二次 get 就可以正常訪問了。

yunData.FILEINFO 結(jié)構(gòu)如下,你可以將它復(fù)制粘貼到j(luò)son.cn里,可以看得更清晰。

清楚了這三個(gè)參數(shù)的位置,我們就可以用正則表達(dá)式進(jìn)行提取了。代碼如下:

爬取到了這三個(gè)參數(shù),就可以調(diào)用之前的 transfer 方法進(jìn)行轉(zhuǎn)存了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84376
  • 百度云
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    7747

原文標(biāo)題:Python爬蟲實(shí)戰(zhàn):抓取并保存百度云資源(附代碼)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Labview可以調(diào)用百度地圖API嗎?

    如題,Labview可以調(diào)用百度地圖API,怎么調(diào)用?有例程就最好,新手求幫助
    發(fā)表于 07-19 15:44

    百度地圖離線API調(diào)用教程

    如何制作呢,今天就教大家簡單實(shí)用的方法制作離線百度地圖,絕對簡單,甚至不需要具備任何編程知識都行。 1、材料準(zhǔn)備水經(jīng)注百度電子地圖下載器 百度地圖離線API:BaiduMap V1.3
    發(fā)表于 01-24 09:42

    百度云和百度開放是什么關(guān)系?愚人節(jié)不能不說的秘密。

    百度云和百度開放是什么關(guān)系?愚人節(jié)不能不說的秘密。
    發(fā)表于 03-29 15:23

    Python數(shù)據(jù)爬蟲學(xué)習(xí)內(nèi)容

    現(xiàn)行環(huán)境下大數(shù)據(jù)與人工智能的重要依托還是龐大的數(shù)據(jù)和分析采集,就如淘寶、京東、百度、騰訊級別的企業(yè)能夠通過數(shù)據(jù)可觀的用戶群體獲取需要的數(shù)據(jù)。而一般企業(yè)可能就沒有這種通過產(chǎn)品獲取數(shù)據(jù)的能力和條件。因此
    發(fā)表于 05-09 17:25

    Python爬蟲初學(xué)者需要準(zhǔn)備什么?

    現(xiàn)行環(huán)境下大數(shù)據(jù)與人工智能的重要依托還是龐大的數(shù)據(jù)和分析采集,類似于淘寶 京東 百度 騰訊級別的企業(yè) 能夠通過數(shù)據(jù)可觀的用戶群體獲取需要的數(shù)據(jù),而一般企業(yè)可能就沒有這種通過產(chǎn)品獲取數(shù)據(jù)的能力和條件
    發(fā)表于 06-20 17:14

    使用Python爬蟲實(shí)現(xiàn)百度圖片自動(dòng)下載的方法

    如何用Python爬蟲實(shí)現(xiàn)百度圖片自動(dòng)下載?
    發(fā)表于 05-23 14:55

    0基礎(chǔ)入門Python爬蟲實(shí)戰(zhàn)課

    大數(shù)據(jù)時(shí)代,有兩種技能可以給自己增加競爭優(yōu)勢。一種是數(shù)據(jù)分析,旨在挖掘數(shù)據(jù)的價(jià)值,做出最佳決策;另一種是數(shù)據(jù)獲取,即爬蟲。學(xué)會(huì)它,相當(dāng)于在數(shù)據(jù)時(shí)代掌握了攫取能源的最有效方式。谷歌百度等搜索引擎的崛起
    發(fā)表于 07-25 09:28

    百度API調(diào)用(三)——語音識別 精選資料推薦

    python 調(diào)用百度語音識別API 一、開通百度語音技術(shù)接口服務(wù)基本過程:1、打開百度ai開放平臺 https://ai.baidu.co
    發(fā)表于 08-18 06:44

    百度“天智平臺”發(fā)布 開放百度大腦能力

    11月30日,2016百度智峰會(huì)正式召開。百度聯(lián)席總經(jīng)理劉煬發(fā)表了題為ABC時(shí)代的演講,并重點(diǎn)介紹了百度
    發(fā)表于 12-01 11:13 ?859次閱讀

    百度IoT平臺介紹

    百度iot平臺基于百度成熟的計(jì)算技術(shù),支持每天百億IoT設(shè)備接入,配合IoT平臺完成基本的連接、統(tǒng)計(jì)、設(shè)備管理。無縫對接
    發(fā)表于 12-09 14:07 ?33次下載

    基于互聯(lián)網(wǎng)腦架構(gòu),對百度的未來發(fā)展趨勢進(jìn)行分析

    這是未來智能實(shí)驗(yàn)室基于互聯(lián)網(wǎng)腦架構(gòu),對世界科技企業(yè)的未來發(fā)展趨勢進(jìn)行分析的文章。因?yàn)?b class='flag-5'>百度排在BAT的首位,因此這個(gè)系列研究文章就從百度開始進(jìn)行研究。
    的頭像 發(fā)表于 01-11 18:05 ?4932次閱讀
    基于互聯(lián)網(wǎng)<b class='flag-5'>云</b>腦架構(gòu),對<b class='flag-5'>百度</b>的未來發(fā)展趨勢進(jìn)行<b class='flag-5'>分析</b>

    百度正式推出百度ABC 3.0,與各行業(yè)結(jié)合實(shí)現(xiàn)產(chǎn)業(yè)變革

    提供技術(shù)基礎(chǔ),通過服務(wù)的方式參與汽車、家居的行業(yè)變革。在自動(dòng)駕駛方面,百度云云端數(shù)據(jù)訓(xùn)練讓Apollo擁有“日行百萬里”的能力。智能車輛的推出使得
    的頭像 發(fā)表于 09-05 15:35 ?4436次閱讀

    百度Apollo高精定位方案分析

    本文通過對百度阿波羅的高精定位方案進(jìn)行分析通過查看百度Apollo的Github上的定位模塊代碼,分析Apollo是如何達(dá)到L4級別的高
    的頭像 發(fā)表于 10-02 11:06 ?1.9w次閱讀

    新基建時(shí)代 百度如何加速百度智能發(fā)展

    百度智能事業(yè)群組(ACG)迎來了最新的組織架構(gòu)調(diào)整。3月11日,百度CTO王海峰發(fā)布了題為《新基建號角吹響 智能一往無前》的內(nèi)部郵件,宣布對ACG進(jìn)行組織架構(gòu)調(diào)整,通過扁平化管理,
    的頭像 發(fā)表于 11-11 16:42 ?1690次閱讀

    GTC 2023:百度智能DPU落地實(shí)踐

    百度太行●計(jì)算:深度擁抱DPU的彈性計(jì)算基礎(chǔ)架構(gòu) 百度智能DPU落地實(shí)踐:極致彈性、高可用的裸金屬實(shí)例 百度智能DPU落地實(shí)踐:更強(qiáng)
    的頭像 發(fā)表于 03-24 16:22 ?3649次閱讀
    GTC 2023:<b class='flag-5'>百度</b>智能<b class='flag-5'>云</b>DPU落地實(shí)踐