解鎖成就:被 NTU Cool 停用帳號

· 3 min read

起因:拖延症遇上死線

修資工課的時候一堆課都要上傳 zip 檔。但由於我每次都會拖到死線才上傳,zip 完再手動拉上去 Cool 繳交弄得很手忙腳亂。

期中後就開始想:不如寫一個類似 PyGithub 的 API wrapper,用 Python 自動進行 NTU Cool 的各種操作——上傳作業、下載檔案、爬私訊之類的。

技術方法

因為 NTU Cool 的網站大部分都是 SSR 的,用 Selenium 來做自動化有點用牛刀殺雞的感覺。所以我的做法是在 F12 看封包,反推出 API endpoint,然後單純發 HTTP request。

這個方法比 Selenium 快很多,也穩定很多。基本上就是模擬瀏覽器的行為,但省去了渲染和 JavaScript 執行的開銷。

失控的開始

寫了雛型之後,我就開始思考這東西到底可以拿來幹嘛。然後就有了一個很靠北的主意:

每分鐘換一次頭貼,上面顯示現在的時間。

這樣我的大頭貼就可以充當一個時鐘了!非常有趣。

於是從一個月前開始,我就掛了一個 script 讓它不斷更新我的頭貼。

東窗事發

原本想說一分鐘一筆流量應該還好吧……

結果我就被盯上了。直接被網管封鎖帳號

還好我禮拜六把最後一個作業交完了。

封鎖通知的信還被 CC 給他們的組長黃從仁教授。我猜他們是懷疑我帳號被盜或者在做壞事。

教訓(?)

說是教訓,但其實我覺得這件事挺好笑的。不過如果真要從中學到什麼的話:

  • Rate limiting 真的存在而且會被抓
  • 一分鐘一次的 API call 在正常使用中其實算異常行為
  • 在做自動化之前,先確認你的所有作業都交了
  • SSR 網站的 API 通常可以從 F12 Network tab 直接觀察到——比起逆向工程,這更像是「正向工程」

Related Posts