大學生涯最後一次搶課結束了,來分享一下歷年搶課的技巧:)
自動填入學號、密碼這個瀏覽器的通常都有選項可以幫我們記憶
所以今天的主題是驗證碼的部份,如何自動填入驗證碼
我們學校的選課登入頁長這樣,以前是沒有驗證碼需要填的
但我印象從106學年度起,學校可能是為了舒緩伺服器瞬間的高流量
用驗證碼這種方式來卡一部份的人潮降低伺服器的負載 (什麼歪理,為什麼不升級伺服器配備 ((怒~
沒關係,道高一尺魔高一丈,搶課的時間分秒必爭,我們總得想個辦法秒殺掉驗證碼
於是經過百般研究這個登入頁面後,終於發現驗證碼圖示旁邊的語音播放按鈕藏有玄機
開到原始碼頁,把語音播放觸發的事件找出來看看,是一個叫readyAudio()
的function
跳到readyAudio()
javascript的部份,發現它會ajax一個叫Handler1.ashx
的頁面
從它ajax的callback function來看,它在playlist
陣列裡利用回傳的voice
湊出六個不知道是什麼的.mp3
音檔連結(230行-235行)
因為個數剛好是6,因此我們可以合理懷疑那就是驗證碼數字的音檔檔名,準備拿來播放用的
繼續跳到nextAudio()
看看吧
沒錯,果然nextAudio()
會播放playlist
陣列裡每個連結的音檔
不過既然一個音檔代表一個數字,是不是只要知道剛剛callback function回傳的voice
,知道回傳的檔名,就可以推測出驗證碼的數字呢
打開開發者工具的Network分頁,然後按下語音播放看看
恩~ 不出所料ajax了Handler1.ashx
這頁
隨後逐一載入六個音檔,並且驗證碼數字從喇叭播放了出來
所以我們的關鍵可以縮小到Handler1.ashx
到底回傳了什麼
只要掌握Handler1.ashx
回傳的檔名,就可以直接用檔名來填入驗證碼啦
打開Handler1.ashx
的preview小分頁
嘿嘿,正是六個驗證碼數字的音檔檔名呢^^
多refresh登入頁幾次,把所有0~9的檔名抓下來存成javascript等等要用
var numHash = { "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c": "0", "356a192b7913b04c54574d18c28d46e6395428ab": "1", "da4b9237bacccdf19c0760cab7aec4a8359010b0": "2", "77de68daecd823babbb58edb1c8e14d7106e83bb": "3", "1b6453892473a467d07372d45eb05abc2031647a": "4", "ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4": "5", "c1dfd96eea8cc2b62785275bca38ac261256e278": "6", "902ba3cda1883801594b6e1b452790cc53948fda": "7", "fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f": "8", "0ade7c2cf97f75d009975f4d720d1fa6c19f4897": "9" };
chrome的書籤其實是支援javascript的
利用這點,我們希望做一個書籤,裡面塞我們的javascript語法讓電腦自動幫我們填入驗證碼
以下是自動填入驗證碼的javascript
第一部份是我們剛剛手動找到的0-9的音檔檔名
第二部份的ajax是仿造登入頁請求Handler1.ashx
拿到要播放的音檔檔名
在ajax成功後,我們會將驗證碼的六個檔名轉置成對應的驗證碼數字,一一串起來
最後回填進txtCONFM
這個驗證碼input欄位
javascript: (function() { var numHash = { "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c": "0", "356a192b7913b04c54574d18c28d46e6395428ab": "1", "da4b9237bacccdf19c0760cab7aec4a8359010b0": "2", "77de68daecd823babbb58edb1c8e14d7106e83bb": "3", "1b6453892473a467d07372d45eb05abc2031647a": "4", "ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4": "5", "c1dfd96eea8cc2b62785275bca38ac261256e278": "6", "902ba3cda1883801594b6e1b452790cc53948fda": "7", "fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f": "8", "0ade7c2cf97f75d009975f4d720d1fa6c19f4897": "9" }; $.ajax({ url: "https://www.xxx.yyy.edu.tw/EleCos/Handler1.ashx", type: "post", async: false, success: function(voice) { document.getElementById("txtCONFM").value = numHash[voice[0]] + numHash[voice[1]] + numHash[voice[2]] + numHash[voice[3]] + numHash[voice[4]] + numHash[voice[5]]; } }); })();
為了存進書籤,我們把寫好的javascript壓成一行
javascript: (function(){ var numHash={b6589fc6ab0dc82cf12099d1c2d40ab994e8410c:"0","356a192b7913b04c54574d18c28d46e6395428ab":"1",da4b9237bacccdf19c0760cab7aec4a8359010b0:"2","77de68daecd823babbb58edb1c8e14d7106e83bb":"3","1b6453892473a467d07372d45eb05abc2031647a":"4",ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4:"5",c1dfd96eea8cc2b62785275bca38ac261256e278:"6","902ba3cda1883801594b6e1b452790cc53948fda":"7",fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f:"8","0ade7c2cf97f75d009975f4d720d1fa6c19f4897":"9"};$.ajax({url:"https://www.xxx.yyy.edu.tw/EleCos/Handler1.ashx",type:"post",async:false,success:function(voice){document.getElementById("txtCONFM").value=numHash[voice[0]]+numHash[voice[1]]+numHash[voice[2]]+numHash[voice[3]]+numHash[voice[4]]+numHash[voice[5]];}}); })();
加入chrome的書籤,完成~
使用效果
以後再也不用在那邊手打驗證碼,晚人家個幾秒就搶不到課啦
原來是靠近淡水附近的大學選課系統…..
太明顯了XD
它其實就是0~9的SHA-1值啦
連變動都懶 學校真的很棒xD
原來是從SHA-1的值來得呀🤔
對啊真的很棒XD
我有些驗證碼的問題,不太清楚,可以請教你嗎?
我的信箱是[email protected]
?