基于python实现网络课程秒刷
在平時的工作生活中,我們總是會遇到一些需要網絡課程的學習,最常見的就像駕校的網絡課程學習,黨員課程學習,工作技能網絡學習等。如下圖所示,這是公司內部的一個黨員學習互動平臺,該平臺每個月都有一定的學習任務。
????????該平臺學習方式有兩種,視頻學習與文檔學習。而對于我們“懶惰”的程序員而言,這種耗時的操作總想省去,于是乎有了腳本秒刷課程的想法。下面分享下秒刷過程。
????????首先就是需要破解平臺的登錄。
????????通過fiddler抓取登錄時的數據包,我們可以知道登錄密碼是經過加密的,因此第一步就是要知道加密方式,并通過python模擬該過程。
????????在瀏覽器中通過F12=>Sources=>Page底下發現一個js腳本,該腳本包含了加密方式。如下圖所示:
????????通過該腳本,我們可以知道該加密方式為RSA加密,且可以得到RSA公鑰中的n和e的值,同時,通過代碼可以知道,該加密還有帶上時間戳,因此可以在python下的模擬加密過程為:
????????破解了登錄后,就可以能很容易的通過python登錄成功。如下圖所示:
????????在登錄成功返回的數據中,我們可以得到一個AccessToken字段,該字段在后面的每個請求中都是必須帶上的參數。
????????接著就是獲取個人學習任務,該過程比較容易,只要通過抓包就能很輕易的模擬出來。獲取個人學習任務后,需要過濾出未學習完成的月份任務。通過返回的json數據可以得到相應的月份。如下圖所示,1為100%完成,0為還未開始學習,通過程序過濾出FinishPencent不為1的月份即可。
????????在每個月份的學習任務中還細分多個專題系列,每個專題系列里面還有不同章節,不同章節下有對應的視頻或者文檔。如下圖:
????????通過對視頻播放抓包可以得到下面信息,如圖所示:
????????初步分析可以知道每個字段的含義和由來,其中videoId為視頻ID,vs為視頻播放進度,record為當前視頻播放進度的一個記錄信息,該字段由服務端返回;terminalType與version為固定的,無需深究;accessToken為登錄時得到的字段。那么現在需要分析的是vs是如何組成的。
????????通過對比與研究網頁源碼發現,vs="v" + 視頻id+ "u" + 課程id+ "i" + 播放的開始時間+ "c" + 播放的結束時間。其中播放的結束時間需要注意的是,原本的一個196秒視頻,但是在這邊為1969,多出來的一位是需要計算的,該計算方式為,視頻id編號+課程id編號+視頻時長,取該計算結果的最后一位,即177991+24902+196為9,那么結束時間就是1969。因此,我們只要模擬這個過程,向服務器發送每個視頻的播放結束時間,服務器就會認為我們完成該視頻的學習,便會把我們學習進度直接改為100%。
????????到此,視頻的學習基本算搞定了,文檔的學習流程基本與視頻一致,這里不做詳細介紹,下面分享整個腳本的代碼。
歡迎關注我個人的公眾號
?
總結
以上是生活随笔為你收集整理的基于python实现网络课程秒刷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python计算moran_空间自相关
- 下一篇: Python机器学习:Grid Sear