export default { async fetch(request, env) { const targetUrl = env.TARGET_URL; if (!targetUrl) { return new Response("Brak TARGET_URL", { status: 500 }); } try { const targetObj = new URL(targetUrl); const requestObj = new URL(request.url); // Modyfikacja nagłówków, aby oszukać stronę docelową const headers = new Headers(request.headers); headers.set("Host", targetObj.host); headers.set("Referer", targetUrl); // Pobranie danych const response = await fetch(targetUrl, { method: request.method, headers: headers, redirect: "follow" }); // Jeśli to nie jest HTML (np. obrazek, plik JS/CSS), zwróć go bez zmian const contentType = response.headers.get("content-type") || ""; if (!contentType.includes("text/html")) { return response; } // Jeśli to HTML, podmień stare linki na adres Twojego workera let html = await response.text(); const globalRegex = new RegExp(targetObj.origin, "g"); html = html.replace(globalRegex, requestObj.origin); return new Response(html, { status: response.status, headers: { "content-type": "text/html;charset=UTF-8" } }); } catch (e) { return new Response("Blad: " + e.message, { status: 500 }); } } };