編輯點評:
某省水利專業技術人員在線學習系統自動學習程序是一款浙江省水利人員在線學習系統助手,就是網上的供在線繼續教育學習,可以幫助在線自主學習,可以后臺運行,不影響其它工作。
分析說明
讓看看某省的水利專業技術人員在線學習可不可以自動學習,今天有空分析了一下:
先分享下我分析網站流程和思路,工具我一般用Fiddler,簡單強大,像這種學習類的網站 ,通常都是登錄網站、顯示課程列表、點開后課程詳情、然后是學習課程、考試這樣一個流程。
這些流程當中,一般又數登錄、學習和考試會有些難度,這個具體情況具體分析。
網站登錄:一般會有驗證碼,這個不難,讀出圖片然后照著提交就可以,如果要做批量自動登錄則還需要弄驗證碼識別。另外還有參數數據加密,通常的只是會用md5加密一下密碼,難一點的就需要分析JS了。
課程學習:通常的大概有幾種情況
簡單一點的網站,學習時定時保存一個進度或者是已學時間,如果達到需要學習的要求時間則返回學習完成。
復雜一點的會中途間隔一段時間會彈出提示要求保存,否則學習無效。
再有就是禁止多個課程同時學習的,服務器通常使用一個公共變量來保存在學課程的ID,再結合服務端計時而非客戶端計時,這樣就使得多個課程同時學習和秒學都無法實現,但我們可以制作一個只需要登錄就自動學習的程序,登錄之后什么都不用管。
考試部分:這個嘛主要就是分為能在頁面找到答案和不能在頁面找到答案的,有的網站的測試直接可以在頁面上找到答案,通常是會有一個隱藏的標記在某個選項上,當然這個是需要分析源碼才看得到,正常在頁面上是不可能看到的。至于沒有答案的測試,一般網站會提供模擬或練習,可以從這里面想辦法得到答案。
具體到網友發來的這個網站,我們來分析一下,今天主要分享一下自動學習部分:
登錄部分說明
登錄部分,我通常喜歡先用錯誤的賬號和密碼測試一下看看返回消息,然后使用正確的賬號密碼登錄再查看返回消息,方便后面寫代碼時判斷,這個網站只是把密碼簡單進行了一下md5加密.
接著就是按照學習流程走一走,打開在學課程列表,點開一個課程進行學習
這個網站隨機7-13分鐘分彈出一個窗口,并且需要在2分鐘內確認,如果不確認,則不計時,不繼續學習。
走了一遍學習的流程后,我們來看看Fiddler的請求記錄:
1、checkUser.action 檢查登錄的賬號和密碼
2、learnerIndex.action打開學習中心
3、learningPlan.action在學課程列表
4、beginLearning.action?bianhao=1162458打開一個具體課程進行學習
5、setBeginTime.action設置開始學習時間
6、saveTime.action保存學習時間
藍色的是獲取熱門推薦和用戶留言等一些不重要的請求。
我們重點來看第5、6,設置開始時間和保存學習進度這兩條請求:
設置開始時間的幾個參數都比較好理解:bianhao(課程編號)、watchTime(觀看時間)、firstTime(是否初次觀看,每次打開第一次,是為1,非為0)、setVersion(可以理解為一個控制標記,初次請求為空,請求會返回一個標記,用于下一次請示,變化的)
通過分析發現watchTime就是7-13之間的隨機數,那么我們可以自己將時間固定為1分鐘或兩分鐘,方便查看學習效果。
再看保存時間這個請求
保存時,正是用到了先前返回的setVersion參數值。
開始學習計時后,如果直接立即提示保存計時,則網站會提示保存失敗,返回的數據里還有提示“高手啊!”~~
所以此網站暫時未找到學習方法,需在設置的觀看時間后再提交保存。
整個流程還是比較簡單的。分析完成,下面來實現一個這個流程。使用E語言簡單實現:
源代碼分享
源碼在圖上,就不放下載了,放一個編譯好的exe,如果剛好需要學習可以下載測試,不需要就不用下載,畢竟E語言的程序容易引起報毒誤會。
熱門評論
最新評論