Edit: baca
Nama Worker
Kode Sumber
--fc99d36e932b56a0b59a32314b05cdc090768264241481400f710717663b Content-Disposition: form-data; name="worker.js" // ================= KONFIGURASI (EDIT DI SINI) ================= const CONFIG = { // 1. Target Web Komik upstream: "https://baca.cahyokntl.site", // 2. Judul Tab Browser customTitle: "Baca Komik Clone", // 3. Link Telegram (Untuk Tombol Melayang) telegramLink: "https://t.me/UsernameChannelKamu", // 4. DAFTAR PENGGANTIAN (TEXT & GAMBAR) replacements: [ // --- GANTI TEKS LOGO --- { from: "Cahyo", to: "Komik" }, { from: "Kntl", to: "Indo" }, // --- GANTI BANNER GAMBAR --- { from: "https://raw.githubusercontent.com/willstore69/tools/refs/heads/main/img_690c4c634d9790.75362374-picsay.png", to: "https://placehold.co/600x200/png?text=BANNER+KAMU" } ] }; // ================= BATAS KONFIGURASI ================= export default { async fetch(request) { try { return await handleRequest(request); } catch (err) { return new Response(`Error: ${err.message}`, { status: 500 }); } } }; async function handleRequest(request) { const url = new URL(request.url); const targetUrl = CONFIG.upstream + url.pathname + url.search; // 1. HEADER PALSU (Agar gambar tidak broken) const newHeaders = new Headers(request.headers); newHeaders.set("Referer", CONFIG.upstream); newHeaders.set("Origin", CONFIG.upstream); newHeaders.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); // 2. FETCH const response = await fetch(targetUrl, { headers: newHeaders, method: request.method, body: request.body, redirect: "follow" }); const responseHeaders = new Headers(response.headers); responseHeaders.delete("content-security-policy"); responseHeaders.delete("x-frame-options"); responseHeaders.set("Access-Control-Allow-Origin", "*"); const contentType = response.headers.get("content-type") || ""; // 3. JIKA HTML -> EDIT & INJECT FITUR if (contentType.includes("text/html")) { let text = await response.text(); // A. Bersihkan Domain & Base text = text.replaceAll(CONFIG.upstream, ""); text = text.replace(/<base[^>]*>/gi, ""); // B. Ganti Title & Konten Lain (Logo, Banner) text = text.replace(/<title>.*?<\/title>/g, `<title>${CONFIG.customTitle}</title>`); CONFIG.replacements.forEach(rep => { text = text.split(rep.from).join(rep.to); }); // C. INJECT FOOTER MEWAH (MANUAL) // Kita selipkan footer sebelum tag penutup </body> // Style padding-bottom: 90px agar tidak tertutup menu navigasi bawah const footerHTML = ` <div style="text-align: center; padding: 20px; padding-bottom: 90px; margin-top: 20px; color: #888; font-size: 0.9em; border-top: 1px solid #222;"> © 2025 Created By <span style="color: #e50914; font-weight: bold; text-transform: uppercase; letter-spacing: 1px;">Bang Ariv</span> </div> `; text = text.replace("</body>", footerHTML + "</body>"); // D. INJECT TOMBOL TELEGRAM (KHUSUS HOME) if (url.pathname === "/" || url.pathname === "/home") { const teleBtnHTML = ` <style> .float-tele { position: fixed; bottom: 70px; right: 20px; width: 50px; height: 50px; background-color: #2AABEE; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(0,0,0,0.3); z-index: 9999; text-decoration: none; transition: transform 0.2s; } .float-tele:active { transform: scale(0.9); } .tele-svg { width: 24px; height: 24px; fill: white; } </style> <a href="${CONFIG.telegramLink}" target="_blank" class="float-tele" aria-label="Join Telegram"> <svg class="tele-svg" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <path d="M9.78 18.65l.28-4.23 7.68-6.92c.34-.31-.07-.48-.52-.19L7.74 13.3 3.64 12c-.88-.25-.89-.86.2-1.3l15.97-6.16c.73-.33 1.43.18 1.15 1.3l-2.72 12.81c-.19.91-.74 1.13-1.5.71L12.6 16.3l-1.99 1.93c-.23.23-.42.42-.83.42z"/> </svg> </a> `; text = text.replace("</body>", teleBtnHTML + "</body>"); } // E. Script Anti-Redirect & Fixer Gambar const scriptFix = ` <script> if (window.top !== window.self) window.top.location = window.self.location; document.addEventListener("DOMContentLoaded", () => { document.querySelectorAll('a[href^="${CONFIG.upstream}"]').forEach(a => { a.href = a.href.replace("${CONFIG.upstream}", ""); }); const bannerAsli = "${CONFIG.replacements[2].from}"; const bannerBaru = "${CONFIG.replacements[2].to}"; document.querySelectorAll('img').forEach(img => { if(img.src.includes(bannerAsli)) img.src = bannerBaru; }); }); </script> `; text = text.replace("</body>", `${scriptFix}</body>`); return new Response(text, { status: response.status, headers: responseHeaders }); } return new Response(response.body, { status: response.status, headers: responseHeaders }); } --fc99d36e932b56a0b59a32314b05cdc090768264241481400f710717663b--
Bindings
Tambah KV
Tambah R2
Tambah D1
← Kembali
Simpan & Deploy
Hapus Script Worker Ini