// ==UserScript==
// @name Bludclart Extension (watch.bludclart.com)
// @namespace https://watch.bludclart.com/
// @version 1.6
// @description Bludclart extension by deeone / Custom / rdwxth — bypass CORS for watch.bludclart.com and other sites
// @match *://*/*
// @grant GM_xmlhttpRequest
// @connect *
// ==/UserScript==
(function () {
'use strict';
console.log("[TM] Tampermonkey Fetch Bridge initialized");
window.addEventListener("message", (event) => {
console.log("[TM] Received message event:", event);
const data = event.data;
console.log("[TM] Parsed event data:", data);
// Only listen to messages coming from the page
if (data?.direction !== "page-to-tampermonkey") {
console.log("[TM] Ignored message with unexpected direction:", data?.direction);
return;
}
// === New: Respond to check-userscript ping ===
if (data.type === "check-userscript") {
console.log("[TM] ✅ Check-userscript request received");
window.postMessage({
direction: "tampermonkey-to-page",
type: "check-userscript-response",
detected: true
}, "*");
return;
}
// Only handle fetch requests after this point
if (data.type !== "fetch-request") {
console.log("[TM] Ignored message with unknown type:", data?.type);
return;
}
const { url, method = "GET", headers = {}, body = null } = data.payload;
const requestId = data.requestId;
console.log(`[TM] Processing fetch-request (ID: ${requestId})`);
console.log("[TM] → URL:", url);
console.log("[TM] → Method:", method);
console.log("[TM] → Headers:", headers);
console.log("[TM] → Body:", body);
try {
GM_xmlhttpRequest({
method,
url,
headers,
data: body,
onload: (response) => {
console.log(`[TM] ✅ Fetch complete for requestId: ${requestId}`);
console.log("[TM] → Status:", response.status, response.statusText);
console.log("[TM] → Headers:", response.responseHeaders);
console.log("[TM] → Response Text:", response.responseText?.slice(0, 500));
window.postMessage({
direction: "tampermonkey-to-page",
type: "fetch-response",
requestId,
status: response.status,
statusText: response.statusText,
responseText: response.responseText,
headers: response.responseHeaders,
}, "*");
},
onerror: (error) => {
console.error(`[TM] ❌ Fetch error for requestId: ${requestId}`, error);
window.postMessage({
direction: "tampermonkey-to-page",
type: "fetch-error",
requestId,
error: {
message: error?.message || "Unknown error",
details: error,
}
}, "*");
}
});
} catch (err) {
console.error(`[TM] ❗ Exception during GM_xmlhttpRequest for requestId: ${requestId}`, err);
window.postMessage({
direction: "tampermonkey-to-page",
type: "fetch-error",
requestId,
error: {
message: "Exception during GM_xmlhttpRequest",
details: err.message || err.toString()
}
}, "*");
}
});
})();