嗅探超星学习通学习页面的视频、课件等资源
< 腳本超星学习通资源嗅探的回應
对于IP不在范围内状态码403的情况,尝试修复了一下(我对js一窍不通)
// ==UserScript== // @name 超星学习通资源嗅探 // @namespace http://tampermonkey.net/ // @version 0.1.10 // @description 嗅探超星学习通学习页面的视频、课件等资源 // @author Jamaskii // @match https://mooc1.chaoxing.com/mycourse/studentstudy?chapterId=*&courseId=* // @icon http://file.market.xiaomi.com/thumbnail/PNG/l62/AppStore/0df974411e86ac90526a328899c555f5ada40cb17 // ==/UserScript== (function() { 'use strict'; //查询接口,传入资源id var ananas_api='https://mooc1.chaoxing.com/ananas/status/'; //用于显示资源的列表元素 var list=document.createElement('table'); var doScan=function(){ //清空列表 list.innerHTML=''; //定位每一个资源所在iframe var ifs=document.getElementById('iframe').contentWindow.document.getElementsByTagName('iframe'); //获取资源信息,并渲染列表 for(var i=0;i<ifs.length;i++){ //unicode转中文,并去转义 var reg = /\\/g; var text=unUnicode(ifs[i].getAttribute('data')).replace(reg,''); //解析json var obj=JSON.parse(text); //通过资源id生成当前资源的下载链接 var ananas_url=ananas_api+obj.objectid; var xhr = new XMLHttpRequest();; xhr.open("GET", ananas_url, false); xhr.send(); var resp_json = JSON.parse(xhr.responseText); var download_url = resp_json.download; //渲染列表 var line=document.createElement('tr'); var type=document.createElement('td'); var name=document.createElement('td'); var namea=document.createElement('a'); var size=document.createElement('td'); type.innerText=obj.type.replace('.',''); namea.innerText=obj.name; namea.href=download_url; size.innerText=obj.hsize; type.style='padding:2px; border: 1px solid black;'; name.style='padding:2px; border: 1px solid black; color:blue; cursor:pointer '; namea.style='color:blue; cursor:pointer '; size.style='padding:2px; border: 1px solid black;'; line.appendChild(type); name.appendChild(namea); line.appendChild(name); line.appendChild(size); list.appendChild(line); } }; //unicode转中文 function unUnicode(str){ str = str.replace(/(\\u)(\w{1,4})/gi,function($0){ return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g,"$2")),16))); }); str = str.replace(/(&#x)(\w{1,4});/gi,function($0){ return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g,"$2"),16)); }); str = str.replace(/(&#)(\d{1,6});/gi,function($0){ return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g,"$2"))); }); return str; } //首次加载渲染 window.onload=function render(){ var container=document.createElement('div'); var btnScan=document.createElement('button'); var boxCtrl=document.createElement('div'); var btnHide=document.createElement('button'); var mainBlock=document.getElementById('mainid'); btnScan.style='width: 60px;'; btnScan.innerText='嗅探'; btnScan.onclick=doScan; btnHide.style='width: 60px;'; btnHide.innerText='收起'; btnHide.onclick=function(){list.innerHTML='';}; container.style='font-size:14px; display:flex; flex-direction:column; align-items:center;'; boxCtrl.appendChild(btnScan); boxCtrl.appendChild(btnHide); container.appendChild(boxCtrl); container.appendChild(list); mainBlock.parentElement.insertBefore(container,mainBlock); doScan(); } })();
登入以回復
对于IP不在范围内状态码403的情况,尝试修复了一下(我对js一窍不通)