zsx

zsx

先作为主站备份 源站:https://my.toho.red

記一次我與某網課系統的對抗

今天早上走親戚的時候,我去親戚家拜訪,家裡人打算與親戚一起出去玩,但我想宅在這邊,不想出門。於是親戚便給了我一個任務:讓我幫忙刷網課做任務。如果只是刷網課的話,放著不管就好了,為什麼要找個人看著呢?我一開始也是這麼想的,但這個系統有個很惡心的地方:每隔大概10分鐘就會彈一道題出來,如果不答完題就會一直暫停,所以放著不管是沒辦法一直刷的。但是我是不可能認真看網課的,而且我也不喜歡守著電腦每隔幾分鐘就答一次題的感覺。因此我便開始研究有什麼辦法可以一勞永逸。

既然客戶端是在 web 上的,那麼首先要幹的當然是按一下 f12 看看彈窗的實現代碼。然後我便發現了這麼一個東西:
![捕獲.PNG][1]
光看這個東西,憑藉我為數不多的 javascript 知識,已經知道了大概的原理:新建一個變量來存儲播放的秒數,每隔 1 秒累加一次,然後當變量累加到一定值時彈出題目。我看了看後臺,和我預想的原理確實差不多:
![捕獲.PNG][2]
在最開始時,我本來是想在控制台裡面直接定義值的,但我發現即使我將所有值定義為 0,還是會照常彈出值,看來這條路是走不通的,控制台定義的變量與網頁讀取的變量不是一個值。

當我還想繼續研究的時候,我繼續往下翻,結果發現了這個東西:
![捕獲.PNG][3]
當我看到這段代碼時,我一度以為我發現了一勞永逸的終極解決方案,趕忙開搞。但無論我在控制台直接執行這個方法,還是寫了個腳本直接 post 這個接口,刷新課程列表仍然顯示未完成。可能是因為服務器端有時間校驗算法,也有可能是我沒有仔細研究腳本,但無論怎麼樣,這條路是走不通的,我也不是專門研究 js 的,沒法看懂全部代碼。那麼只能走最後的一條路:直接修改代碼,讓定時器失效。

在經過一段時間的查找後,我發現 chrome 是有辦法直接替換網頁內容的。具體操作如下:

按下 f12,進入 "源代碼" 頁面,點擊替代,選中 "啟用本地替代":
![捕獲.PNG][4]
我這邊已經添加好了,如果是第一次添加會顯示 "選擇放置替換項目的文件夾",隨便新建一個文件夾然後選中就好,選中後會提示請求權限,直接允許。

這一步做完後,我發現 f12 顯示的源代碼可以直接編輯了。於是我開始將定時器改造成了這樣:
![捕獲.PNG][5]
按下 ctrl+s 保存,然後再刷新一下網頁,控制台便變成了這樣:
![捕獲.PNG][6]
經過測試本次改造完美達成了目標,不僅不會彈出題目,在看完視頻後課程列表也顯示了已完成。

終於可以放下電腦快樂刷小破站了。

2022.3.6
[1]: https://my.toho.red/usr/uploads/2022/03/98944978.png
[2]: https://my.toho.red/usr/uploads/2022/03/1414410636.png
[3]: https://my.toho.red/usr/uploads/2022/03/4248933191.png
[4]: https://my.toho.red/usr/uploads/2022/03/1057079627.png
[5]: https://my.toho.red/usr/uploads/2022/03/2544401216.png
[6]: https://my.toho.red/usr/uploads/2022/03/496899477.png

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。