搜狐視頻模擬登錄以及上傳
本文首發公眾號Python數據(公眾號的微信號:pydatame)
嗨!大家好!
明天我就要入職什麼值得買公司了,這是我第一份正式工作,祝自己工作順利!工作之後就不能像上周這樣每天要麼更新公眾號要麼直播分享技術內容了,也沒很多精力去關注幾百人的數據群了。相關精力會傾斜到知識星球、付費博客和付費交流群中。
像數據學習的入門知識我也分享了我自己的學習路線供大家參考,也寫了一篇推薦的數據學習路線的公眾號,感興趣的小夥伴可以翻翻看看。
我更傾向於寫一些現在網上不容易找到的資料,後續可能也會翻譯一些技術文章。今天還是講網路請求的分析,是與爬蟲相對的另一部分知識,但也是高級爬蟲工程師需要具備的技能。像一般寫的爬蟲都是download數據,我今天講的是upload。就是上傳提交數據。
本文分享搜狐視頻的模擬上傳視頻,另外知識星球和博客還會另外分享一下秒拍的模擬上傳視頻過程,兩個例子供大家學習交流。
要想上傳視頻需要先做模擬登錄,於是咱們看一下搜狐視頻的模擬登錄請求。
我之前給大家分享過百度、淘寶、新浪微博還有豆瓣等各大網站的模擬登錄,有經驗的小夥伴可以看出,搜狐視頻的登錄請求並不複雜,我們需要找的欄位就只有password。直觀感覺+嘗試,發現密碼是md5加密的結果。所以我們很容易完成了搜狐視頻的模擬登錄過程。因為重點是後面的模擬上傳視頻,所以多次測試代碼過程中發現,其登錄一定程度上會觸發驗證碼。驗證碼下載請求是這個:https://v4.passport.sohu.com/i/captcha/picture?pagetoken=1521971140089,顯然後面的一串數字是毫秒級時間戳。寫一下這個下載驗證碼並識別的代碼:
在登錄過程中還可能遇到需要帶cookie訪問才能成功的情況,不過這個不是必然觸發,相關代碼如下:
本文的重點在下面,就是模擬網路請求上傳視頻。
實際上傳一次發現請求如上,可能有小夥伴會問為什麼這是個GET請求呢,按道理講上傳應該是POST請求啊。我給解釋一下,這個請求實際只是發出了試圖上傳的請求,然後此請求返回真實的上傳地址,然後再向這個地址發送POST請求分段上傳視頻。先一步步來,這個GET請求我們只需要拿到videosize參數以便告訴伺服器分幾段接收上傳的文件。這個文件大小可以由Python中os模塊中的os.path.getsize(path)來得到。這個save.do請求的response如下:
我們從中取到上傳文件的真實地址和文件id,發送如下POST請求:
代碼實現:
最後收到的response是:
至此,上傳過程完成。
本文相關代碼可以在知識星球或者Pydata數據博客下載。另外星球和博客內近期還會跟大家分享秒拍的模擬登錄以及上傳視頻的代碼,請小夥伴們關注!
作者做過淘寶、百度、微博、豆瓣、果殼等各大網站的模擬登錄的網路請求分析,以及京東搶購的代碼實現。星球和博客內有部分直播的錄播分享。歡迎小夥伴轉發點贊~~~
https://t.zsxq.com/aiYzByV (二維碼自動識別)
公眾號二維碼:
http://weixin.qq.com/r/ii8lPdDEHI1jrZRe93qY (二維碼自動識別)
數據博客地址: https://pydata.me
推薦閱讀:
※一篇文章入門Python
※5機器學習入門:Kaggle和泰坦尼克號預測
※不同需求下可視化圖形選擇(翻譯)
※票房預測那些事兒
※Titanic 數據分析