【實戰案例】python進行自動網上考試

前言

文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。

背景說明

在github上發現一個古老的華醫網考試腳本(https://github.com/lhzzzzzz/autoexamofhuayi),是python2寫的。它實現了華醫網自動登錄、自動獲取考試編號cwid、自動考試。現在把它翻新一下。

腳本功能

基於已知的考試編號cwid,進行華醫網自動考試。

需要用到的工具(開發環境)

1、Google Chrome;

2、Fiddler:用於抓包;

3、PyCharm

思路分析

一、答題流程分析

已有現在的Javascript腳本(《華醫網自動答題腳本》),根據華醫網的答題代碼,進行自動答題。但這個代碼使用的是試錯了,反覆提交需要消耗時間,不適合批量操作。

根據GitHub現有腳本(https://github.com/lhzzzzzz/autoexamofhuayi),發現華醫網是直接把原答案放在試題的網頁中

所以其實在答題界面,用chrome的F12進行Inspect,也能找到正確答案。

name=“gvQuestionctl03ctl03result” 對應的 value即正確答案的value

通過Fiddler抓包可以看到,考試主要包括三個動作:

1、GET 考試試題

2、POST 考試試題+答案

3、GET 考試結果

而其中

POST答案提交的data包括以下幾部分:

1、__EVENTTARGET 等是 ASP.Net 相關驗證參數:可以從考試界面的網頁中用正則表達式提取;其中留空的字段可以不提交

2、Hidden1、Hidden2、Hidden3:表示最前面的課程評價星級,可以不提交;

3、gvQuestionctl03ctl03question_id、gvQuestionctl03ctl03result、gvQuestionctl03ctl03rbl :表示題號、正確選項、考生選項(這裏當然是直接提交正確選項的value)

二、模擬登錄華醫網

根據舊的py腳本,以前的華醫網登錄不需要驗證碼,現在有了圖片驗證碼,登錄變得麻煩了。還是改成手動複製Fiddler抓到的cookie吧

三、Session會話保持

華醫網登錄之後使用Session進行對話,獲取考卷、提交考試、獲取成績都會刷新cookie,而且只有最新的cookie能進行下次對話。

所以這裏需要用requests.session()保持會話,而且起始的cookie必須是最新的一個cookie

運行結果

如果全部考完,可以在網頁中看到可以申請證書。

MORE

華醫網很多bug的,如沒有完成考試也可以直接申請證書,在考試結果頁面,瀏覽器狀態輸入代碼就可以。

使用流程(代碼實現)


爲解決初學者學習上的困難,專門建立的Python學習扣QUN:⑧⑤⑤-④零⑧-⑧⑨③從零基礎開始到Python各領域的項目實戰教程、開發工具與電子書籍。與你分享企業當下對於python人才需求及學好python的高效技巧,不停更新最新教程!點擊加入我們的 python學習圈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章