如何使用Tampermonkey hook修改掉某条url通过ajax请求回来的数据
要使用Tampermonkey hook修改通过ajax请求返回的数据,你可以使用Tampermonkey的GM_xmlhttpRequest函数来代替原始的XMLHttpRequest函数,并在其中添加钩子来修改数据。
以下是一个示例代码,它演示了如何使用Tampermonkey hook修改通过ajax请求返回的数据:
// ==UserScript==
// @name Tampermonkey Hook Example
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Example of using Tampermonkey hook to modify ajax response data
// @author Your Name
// @match http://example.com/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
// 重写XMLHttpRequest对象
window.XMLHttpRequest = function() {
var originalXHR = new originalXMLHttpRequest();
// 重写open方法
originalXHR.open = function(method, url, async, user, password) {
// 添加监听器来捕获返回的数据
this.addEventListener('readystatechange', function() {
if (this.readyState === 4 && this.status === 200) {
// 修改返回的数据
var modifiedResponse = modifyResponse(this.responseText);
// 调用原始的onreadystatechange方法并传入修改后的数据
this.onreadystatechange(modifiedResponse);
}
});
// 调用原始的open方法
originalXHR.open.apply(this, arguments);
};
return originalXHR;
};
// 修改返回的数据的函数
function modifyResponse(response) {
// 在这里可以对返回的数据进行修改
var modifiedResponse = response.replace('original', 'modified');
return modifiedResponse;
}
在上面的示例中,我们首先使用window.XMLHttpRequest重写了原始的XMLHttpRequest对象。然后,在重写的open方法中添加了一个监听器来捕获返回的数据。当请求状态为4(请求已完成)且状态码为200(成功)时,我们调用modifyResponse函数来修改返回的数据,并将修改后的数据传递给原始的onreadystatechange方法。
注意,需要将@grant GM_xmlhttpRequest添加到UserScript的元数据中,以允许使用GM_xmlhttpRequest函数。
请注意,此方法只适用于通过ajax请求返回的数据。如果该网站使用其他方法获取数据,例如WebSocket或fetch API,你可能需要使用其他方法来修改返回的数据。
原文地址: https://www.cveoy.top/t/topic/i7NJ 著作权归作者所有。请勿转载和采集!