版權宣告:本文為博主原創文章,遵循 CC 4。0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
本文連結:
blog。csdn。net/Python_shannian/article/details/120059842
這次給大家帶來的是一個2500的爬蟲外包專案,在這裡肯定有人說這個不值這麼多,也有人會各種嘲諷。但是別忘了,人的眼界不一樣,做事的決定自然會不同。
如果2500能給你帶來25000的利潤,那麼你會選擇毫不猶豫的支付嗎?話不多說,看聊天記錄,還是挺久以前做的了。(我後面再給大家一一道來,暫時先看咱們的教程。)
分析(x0)
進入目標網站:https://www。laifeng。com/
隨便進入一個分類,點選進入某直播間
當我們點選彈幕直播框時,它會要求咱們登入賬號。這也實屬正常,沒辦法那咱們就登入吧。
登入成功後,咱們抓一下這個傳送彈幕的包:
確實尷尬,我不知道傳送什麼,就說了句您好,沒想到小姐姐很驚訝的說您好,您也好……然後說聽完一首《飄向北方》就下播了……我不知道他下播了後,我還是否可以傳送彈幕。
不管了,我先抽支菸看看小姐姐聽完這首歌再接著寫。
emmm,roomid為直播間的房間號,content為我傳送的內容。
roomid可以在url中看得到的,前面那個圖我沒截出來,自己看一下就知道了。
t為時間戳,sign簽名也是JavaScript加密的。其它值不變,自己傳送兩次彈幕抓包對比一下就好了。
分析(x1)
有人會奇怪你怎麼知道t為時間戳……這玩意還需要說麼,還是說一下吧,查詢一下t的來源,我覺得向這種短的引數,最好別直接搜t,你會搜出來一大堆的。我建議搜臨近的值sign,因為你提交的表單中有這麼多的引數,那麼在js檔案中基本也會有相對應的引數的。
t:i意思是把i賦值給t,而
哦豁,沒學過前端的人就看不懂這個是啥意思了,這個其實就是JavaScript語法中的取現行時間。
在我們的鬼鬼js除錯工具看看效果:
可以看到是它是一直在變化的,就像咱們的時間一樣一直在流逝變化。不懂什麼是時間戳的自己去谷歌一下。
或者在咱們的控制檯也可以得到它:
既然它是利用JavaScript這麼個語法生成的引數,那麼我們用Python如何實現?
OK,至此已經解決第一個加密的引數。
分析(x2)
接下來就是大頭菜了,咱們分析sign簽名是如何得到的:
好吧,很多位置引數,壓根不知道是如何得來的但是可以看到它用到 i 這個引數,也就是咱們的時間戳。
還是debug一下吧:
打個斷點,在瀏覽器上隨意傳送一彈幕,發現g就是appkey是一個定值,c為一個字典,咱們要取的是c字典中data鍵所對應的值:
是不是好熟悉,這不就是咱們post中的data的值麼?那麼就只剩下d了。
d為一個字典,而咱們需要的是d裡面的一個叫token鍵對應的值:
憑我經驗,這個d根本不需咱們去找它應該就是咱們的cookies,直接搜一下就完事了……
那麼到此為止,咱們的所有引數都已經分析完了,咱們開始測試一下:
發現缺少物件,emmmmm我三十歲的人都沒物件……這裡毫無疑問就是少了h這個函式物件。
那麼咱們去給它找出來即可
點一下這個花括號,然後這樣子的話函式末也有出現這麼一個橫槓,然後把JavaScript程式碼摳下來再來測試:
OK,到此為止,咱們已經完成了百分之五十了,為什麼最核心的部分完成確只完成百分之五十呢?因為這個專案為三個程式:自動對接接嗎臺子註冊賬號、房間ID號採集篩選出主播線上的ID號、咱們這個的話就是關鍵的傳送程式。
程式碼
Python程式碼:
需要自己手動拿下登入頁碼的cookies,然後自己更改好傳送的內容與房間id即可。
JavaScript原始碼:
效果
結語
點贊,在看,轉發
三連哦~