// ==UserScript== // @name 思源空间 hack // @namespace http://hack.xjtu.edu.cn/ // @version 0.2 // @description 使XJTU思源学习空间所有课件可下载 // @author Noan // @match https://ispace.xjtu.edu.cn/* // @match http://ispace.xjtu.edu.cn/* // @match https://class.xjtu.edu.cn/* // @match http://class.xjtu.edu.cn/* // @icon https://ispace.xjtu.edu.cn/static/assets/images/favicon-b420ac72.ico // @grant none // @license GPL // @downloadURL none // ==/UserScript== (function() { 'use strict'; let original_XHR = window.XMLHttpRequest; class XMLHttpRequestHijacked extends original_XHR { override=false; hijack=false new_val={} set response(new_val) { this.override=true; this.new_val=new_val; } get response() { if(this.override) { return this.new_val; } else if(this.hijack) { let res=JSON.parse(super.response) if(!("uploads" in res)) { return super.response; } for(let i=0;i< res.uploads.length;i++) { if("allow_download"in res.uploads[i]) { res.uploads[i].allow_download=true; } } return JSON.stringify(res); } else { return super.response; } } open(method, url, async=true, username, password) { if(url.search("api/activities")!=-1) { this.hijack=true; } return super.open(method, url, async=true, username, password); } } window.XMLHttpRequest = XMLHttpRequestHijacked; })();