【麥課在線教育mycourse】利用Js快速刷完新生安全教育課程


0. 注意

全文僅供學習參考,有時間的同學還是請認認真真的刷課。

1. 解決方法

  1. 用瀏覽器(建議用chrome)打開課程主頁weiban.mycourse.cn

  2. F12打開開發者工具,打開console,然后切換javascript contextmcwkmycourse.cn

在這里插入圖片描述

  1. 輸入finishWxCourse();回車即可!

在這里插入圖片描述

  1. 返回課程列表頁面,查看該節課是否已完成?

Ps: 注意以下幾點:

  • 如果返回到課程列表頁面,該節課是未完成狀態,可能是緩存,可以重新執行上述步驟,或者先刷其他課,隔一段時間再看是否已完成。

2. 分析

登錄之后,點擊新生課堂

在這里插入圖片描述

然后隨便一門課

在這里插入圖片描述
在這里插入圖片描述

就第一個 防盜知識-基礎篇吧,完成該節課學習之后,彈出來一個alert。

在這里插入圖片描述

看到嵌入式頁面,可以猜測是從<iframe></iframe>中彈出來的。

同時,我們可以從network中看到多一個請求

在這里插入圖片描述

根據字面意思,大概就是向服務器發送請求表明我已經完成了該節課的學習。

通過查看該請求的Initiator(下圖),可以得知該請求是從wx.jsfinishWxCourse()發起的。

在這里插入圖片描述

wx.js中的finishWxCourse()如下:

function finishWxCourse() {
	try{console.log(exportRoot.currentFrame)}catch(e){}
    try {
        var userid = getQueryString("userCourseId");
        var jiaoxuejihuaid = getQueryString("tenantCode");
        var finishWxHost = document.referrer.replace("http://","").replace("https://","").split("/")[0];
		if(document.referrer=="" || document.referrer==null || document.referrer==undefined){
			finishWxHost = "weiban.mycourse.cn"
		}

        var webUrl = window.location.href;
		var finishWxUrl=getRecordUrl(webUrl);
		if(finishWxHost.indexOf("218.25.139.161") > 0){
            //finishWxUrl = "http://"+finishWxHost+"/pharos/usercourse/finish.do";
			finishWxUrl = "https://"+finishWxHost+"/pharos/usercourse/finish.do";
        }
			 
		var finishData = {"userCourseId": userid, "tenantCode": jiaoxuejihuaid};
        	
        $.ajax({
            async: false,
            url: finishWxUrl,
            type: "GET",
            dataType: "jsonp",
            data: finishData,
            timeout: 5000,

            success : function (data) {
                if (data.msg == "ok") {
                    alert("恭喜,您已完成本微課的學習");
                } else {
                    alert("發送完成失敗");
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
            }
        });
    } catch (e) {
        alert("報了啥錯誤" + e)
    }
}

可以看到該函數主要就是拿到var finishData = {"userCourseId": userid, "tenantCode": jiaoxuejihuaid};之后發起Ajax請求。

那我們先直接無腦在console中直接運行該函數,看能得到什么結果。

注意此處將javascript context切換到mcwk.mycourse.cn這個iframe中。

在這里插入圖片描述

結果運行如下:

在這里插入圖片描述

返回到課程頁面,可以看到該課程已完成。

3. 總結

很意外找到此方法!他並沒有用到瑞數那種比較復雜的反爬技術,僅供學習參考吧!

另外,該課程的考試比較簡單,建議開兩個窗口,一個是考試窗口,另一個用百度在過程中搜題!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM