export default { async fetch(request, env, ctx) { const url = new URL(request.url); const target = url.searchParams.get('url'); // Kalau TIDAK ada parameter ?url=..., tampilkan halaman depan (index.html) if (!target) { return new Response(getLandingPage(), { headers: { 'Content-Type': 'text/html; charset=utf-8' } }); } // === BAGIAN PROXY (jika parameter ?url=... ada) === // Validasi URL target let targetUrl = target; if (!/^https?:\/\//i.test(targetUrl)) { targetUrl = 'https://' + targetUrl; } const headers = new Headers(request.headers); // Hapus header yang berpotensi bikin situs tujuan blokir headers.delete('host'); headers.delete('origin'); headers.delete('referer'); headers.set('User-Agent', 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 ...'); try { const response = await fetch(targetUrl, { method: request.method, headers: headers, body: request.method !== 'GET' && request.method !== 'HEAD' ? await request.arrayBuffer() : null, redirect: 'follow' }); const responseHeaders = new Headers(response.headers); responseHeaders.set('Access-Control-Allow-Origin', '*'); // Biar embed di WebView aman responseHeaders.set('X-Frame-Options', 'SAMEORIGIN'); return new Response(response.body, { status: response.status, headers: responseHeaders }); } catch (err) { return new Response('Gagal mengambil halaman tujuan', { status: 500 }); } } }; function getLandingPage() { return `
Masukkan alamat situs yang ingin dibuka