Intercept and modify XMLHttpRequest to change playStatus to 3
// ==UserScript==
// @name neustudydl Change playStatus to 3
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Intercept and modify XMLHttpRequest to change playStatus to 3
// @author Your Name
// @match https://neustudydl.neumooc.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Keep track of whether the interception has already been triggered
let triggered = false;
// Save the original XMLHttpRequest send method
const originalSend = XMLHttpRequest.prototype.send;
// Overwrite the send method
XMLHttpRequest.prototype.send = function(body) {
// Check if the request URL matches
if (this._url.includes('/web-api/teachmanager/teach-course-res-stu-record/studyForAudioOrVideo') && !triggered) {
// Parse the body as JSON
let requestBody = JSON.parse(body);
// Modify the playStatus to 3
requestBody.playStatus = 3;
// Convert it back to JSON string
body = JSON.stringify(requestBody);
// Set the triggered flag to true
triggered = true;
}
// Call the original send method with the modified body
originalSend.call(this, body);
};
// Save the original XMLHttpRequest open method
const originalOpen = XMLHttpRequest.prototype.open;
// Overwrite the open method to store the request URL
XMLHttpRequest.prototype.open = function(method, url) {
this._url = url; // Store the URL
originalOpen.apply(this, arguments); // Call the original open method
};
})();