日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度文库文档下载分析

發布時間:2024/8/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度文库文档下载分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  今天要在百度文庫下一個文檔,由于之前測試,清掉了cookies,所以下載文檔時突然提示登陸(之前一直都是自動登陸,記不住密碼啊……),試了半天才想起來密碼,就打算在分析下。

? ? 要說自己對百度文庫也算緣分不淺,當年大二的時候我們工作室接到一個項目,就是采集互聯網的各類電子文檔,以供某公司建立文庫。當時百度雖說還上線不到一年,但是卻已經很有名氣,因此也是我們的重點關注對象。下邊開始分析(只看下載分析直接看(二)就行了):?

一、文檔在線展示的實現方式和采集策略

????在線文庫普遍采用的技術有兩大類:一是將文檔轉為swf文件,然后頁面用flash展示;二是按照文檔原有結構,生成html結構展示。就我們用戶而言,多數時候更喜歡第二種,給人感覺更直觀一點,但是就實現難度而言,第二種也比較麻煩,原因不多說,想想就知道。
? ? 當時在線文庫主要采用的都是flash方式,這種方式既實現方便,又能夠有效的防止文檔被惡意抓取,雖說生成的swf文件很容易拿到,但是對于采集者而言,想得到的往往是文檔內容。那么就真的沒辦法了嗎?其實不然,我們了解下這種方式的實現原理就會發現,絕大多數swf展示文檔都是將文檔每頁生成圖片,然后再生成swf的,那么我們只要通過工具將swf中圖片提取出來(這個自己查資料吧),再通過ocr將文字識別出來就行了。
? ? 好吧,我想你看到ocr就沒啥心情在看下去了,這玩意目前免費的還沒幾個靠譜的,那么我們來看下第二種方法。第二種就比較簡單了,因為文檔內容直接嵌入網頁,我們直接提取出來就行了唄,小娃娃都會呢??墒俏乙f這連第一種都不如,因為有兩個關鍵問題:一是采用這一方式的不多,就百度文庫來說只有一部分文檔是這么實現的,杜宇PPT這一類富文本元素較多的,還是flash實現;二是你即使內容提取出來了,想要按原樣式生成文檔,也很難的。
? ? 這也不行,那也不行,那咋著行呢?其實上邊都是廢話,想要文檔,直接下載不就行了。

二、百度文庫文檔下載分析

1、準備好裝備

? ? 需要準備好以下裝備:

  • 百度賬號
  • chrome/firefox
  • fiddler2(不是必備,但是用過你就愛不釋手) ? ?
  • 新建一個txt文件方便記錄信息 ? ?

2、找到文檔下載鏈接

? ? 我們先找個賬號登,隨便打開一個不要財富值的文檔(最好大一點,1M以上),F12打調試工具,然后下載文檔,可以看到Network出現很多請求,那么哪個請求時下 載鏈接呢?直接將請求按照Siz e大小排序,你會發現最大的那個請求返回內容特別大,這個就是下載鏈接,請求詳情如下:


?

請求鏈接:
http://bs.baidu.com/wenku41/%2F1a34b536b85dec92517f7ef702e577b4?sign=MBOT:y1jXjmMD4FchJHFHIGN4z:wL%2Bt8HZ%2B9z7YjU2vGwjLZAJH868%3D&time=1393158775&response-content-disposition=attachment;%20filename=%22%B4%BA%CD%ED%B2%BB%CD%EA%C8%AB%BD%DA%C4%BF%B5%A5.doc%22&response-content-type=application%2foctet-stream

?

????多下載幾個就會發下這三部分是變化的,第一部分搜索文檔頁源碼就能找到,filename后的一眼就能看出來是文件名的url編碼,而第兩部分在原頁面卻找不到,可以想到應該是從服務器返回的,那么我們再來看看其他請求??梢院苋菀装l現有個叫download的請求,這名字很明顯了,我們看下這個請求:


response部分:

? ? 激動人心的時刻來了,在response中,Location就是文檔下載鏈接。那么這個請求有事怎么發起的呢?首先看下請求參數,除了doc_id,其他幾項都找不到,在看下referer,鏈接就是之前的文檔頁,我們在這個頁面搜一下“ downloadToken ”,會驚喜的發現下邊這個表單:

?

<form name="downloadForm" action="/user/submit/download" method="post" target="runDown"><input name="ct" value="20008" type="hidden" /><input name="doc_id" value="b732f1ee240c844769eaee90" type="hidden" /><input name="retType" value="newResponse" type="hidden" /><input name="sns_type" type="hidden" /> <input type="hidden" name="storage" value="0" /><input type="hidden" name="useTicket" value="0" /> <input type="hidden" name="downloadToken" value="e1de787724d82b8c18c1be98438782eb" /> <input type="hidden" name="sz" value="15872"></form>

? ? 到此真相大白:在文檔也點擊下載后,首先用詞表單向download頁發起請求,服務器則會返回文檔的下載地址并跳轉,然后返回文檔流。?

3、模擬請求

? ? 到這里就用到fiddler2了,我們如下構造請求(這里特地找了一個未下載過需要財富值的,):


? ? 執行......然后發現返回code:200,response中沒有Location。那么哪里出問題了呢?我們模擬求情和瀏覽器操作哪一點不一樣呢?登 !模擬請求中我們沒有登 ,直接把瀏覽器中已登錄的cookies貼過來,然后在執行......:?


? ? 成功!請求download也需要登陸信息,那么如何登陸呢?請參見 模擬百度登
? ? 此次分析到此結束,代碼就不貼了,照著貼吧登陸改了一個最后請求cookies總是空的,不知道是不是因為跨域需要手動設置cookies,但是按照以上的分析肯定能實現下載的。

轉載于:https://www.cnblogs.com/good-temper/p/3563699.html

總結

以上是生活随笔為你收集整理的百度文库文档下载分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。