既然客戶端是在 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