export default { async fetch(request) { // กำหนดโดเมนเดิมที่โดนบล็อก (ใส่แบบไม่มี https:// หรือ / ด้านหลัง) // ตัวอย่าง: ถ้าทำของเว็บแรกให้ใส่ 'jb007.co' const OLD_DOMAIN = 'jb007.co'; const url = new URL(request.url); const NEW_DOMAIN = url.hostname; // ดึงชื่อโดเมนใหม่ที่ลูกค้าใช้เข้าเว็บมาโดยอัตโนมัติ url.hostname = OLD_DOMAIN; const newRequest = new Request(url, request); newRequest.headers.set('Host', OLD_DOMAIN); newRequest.headers.set('Referer', `https://${OLD_DOMAIN}/`); const response = await fetch(newRequest); const contentType = response.headers.get("content-type"); // ตรวจสอบว่าถ้าหน้าเว็บเป็น HTML ให้ทำการ Replace ลิงก์เก่าเป็นลิงก์ใหม่ if (contentType && contentType.includes("text/html")) { class ElementHandler { element(el) { // ค้นหาและสลับ URL ใน Attribute ต่างๆ รวมถึง data-src สำหรับระบบ Lazy Load รูปภาพ/วิดีโอ ['href', 'src', 'action', 'data-url', 'data-src', 'data-href'].forEach(attr => { const val = el.getAttribute(attr); if (val && val.includes(OLD_DOMAIN)) { el.setAttribute(attr, val.replace(new RegExp(OLD_DOMAIN, 'g'), NEW_DOMAIN)); } }); } } // สั่งให้ HTMLRewriter ทำงานกับทุก Elements ในหน้าเว็บ return new HTMLRewriter() .on('*', new ElementHandler()) .transform(response); } return response; } }