快手短視頻爬取經驗分享
作者:冰藍的天空
原文:http://www.cnblogs.com/binglansky/p/8483096.html
環境: python 2.7 + win10
工具:fiddler postman 安卓模擬器
首先,打開fiddler,fiddler作為http/https 抓包神器,這裡就不多介紹。 配置允許https
配置允許遠程連接 也就是打開http代理
電腦ip: 192.168.1.110 然後 確保手機和電腦是在一個區域網下,可以通信。由於我這邊沒有安卓手機,就用了安卓模擬器代替,效果一樣的。打開手機瀏覽器,輸入192.168.1.110:8888,也就是設置的代理地址,安裝證書之後才能抓包
安裝證書之後,在WiFi設置 修改網路 手動指定http代理
保存後就可以了,fiddler就可以抓到app的數據了,打開快手 刷新,可以看到有很多http請求進來,一般介面地址之類的很明顯的,可以看到是json類型的
http post請求,返回數據是json ,展開後發現一共是20條視頻信息,先確保是否正確,找一個視頻鏈接看下。
ok 是可以播放的 很乾凈也沒有水印。那就打開postman 來測試,form-data 方式提交則報錯
那換raw 這種
報錯信息不一樣了,試試加上headers
nice 成功返回數據,我又多試幾次,發現每次返回結果不一樣,都是20個視頻,剛才其中post參數中有個page=1 這樣一直都是第一頁就像一直在手機上不往下翻了就開始一直刷新那樣,反正也無所謂,只要返回數據 不重複就好。
下面就開始上代碼
下面測試
多線程下載 每次下載2000 個視頻左右 默認下載到D:快手
總結:其實我這次爬的快手有點投機取巧了,因為post過去的參數 sign 是簽名 的確是有加密的,只所以還能返回數據。
那是因為我每次都是請求的一樣的鏈接 page=1 都是第一頁的 當我改成2的時候,就驗簽失敗了。然而,它剛好這樣也能返回不同的數據,雖然達到了效果,但卻沒有能破解他的加密演算法。。。
最後放上我的github地址 : https://github.com/binglansky/spider
題圖:pexels,CC0 授權。
TAG:編程派 |