โ† Semua pembelajaran / Astro Nol โ†’ Portal Berita
Fase 8 ยท Cloudflare: Cache, Edge & WAF

WAF, bot & crawler yang harus tetap masuk

WAF yang terlalu longgar membiarkan scraper menghabiskan kapasitasmu; yang terlalu ketat menghapusmu dari Google News. Ini cara menempatkan garisnya.

Intisari

  • Nyalakan managed WAF rules, tapi kecualikan webhook dan pantau positif palsu selama beberapa minggu.
  • Googlebot, Bingbot, dan bot media sosial harus lolos โ€” verifikasi lewat bot terverifikasi Cloudflare, bukan lewat User-Agent.
  • User-Agent bisa dipalsukan siapa saja. Jangan pernah memakainya sebagai dasar izin.
  • Crawler AI adalah keputusan bisnis: sebagian membawa trafik balik, sebagian tidak.
  • Scraper isi berbayar adalah ancaman yang berbeda dari serangan โ€” dan butuh penanganan berbeda.

Menyalakan WAF tanpa merusak apa pun

LangkahDurasi
1. Nyalakan managed rules dalam mode Log saja1โ€“2 minggu
2. Tinjau Security Events; cari positif palsuโ€”
3. Buat aturan skip untuk yang sahโ€”
4. Ubah ke Managed Challenge1 minggu
5. Baru ke Block untuk yang tingkat kepercayaannya tinggiโ€”

Positif palsu di portal berita punya bentuk khas. Editor menempelkan HTML dari sumber lain ke form artikel, dan WAF membacanya sebagai percobaan XSS. Judul artikel berisi kutipan pernyataan yang mengandung tanda kutip dan tanda kurung terbaca sebagai injeksi SQL. Keduanya sah, keduanya diblokir, dan redaksi akan melaporkannya sebagai "sistemnya error" โ€” tanpa jejak di log aplikasimu.

Aturan skip untuk jalur redaksi:

(starts_with(http.request.uri.path, "/admin")
 and http.request.method eq "POST"
 and http.cookie contains "__Host-sesi")

Aksi: Skip โ†’ SQLi and XSS managed rules

Pengecualian ini dibatasi ke jalur admin yang sudah butuh sesi โ€” jadi ia tidak membuka apa pun untuk publik. Perlindungan sesungguhnya untuk jalur itu adalah sanitasi HTML dari Fase 7.

Bot yang harus tetap masuk

BotWajib?Akibat kalau diblokir
Googlebot / Googlebot-NewsMutlakHilang dari Google dan Google News
BingbotYaHilang dari Bing
facebookexternalhitYaPratinjau tautan di Facebook rusak
TwitterbotYaKartu tautan rusak
WhatsAppYaPratinjau rusak โ€” di Indonesia ini jalur berbagi terbesar
Bot pemantauan milikmuYaAlarm palsu

Baris WhatsApp itu penting khusus untuk portal Indonesia. Sebagian besar berbagi artikel terjadi lewat WhatsApp, dan yang menentukan orang mengklik atau tidak adalah pratinjau โ€” judul, gambar, dan ringkasan. Kalau WhatsApp/2.x diblokir WAF, tautan yang dibagikan muncul sebagai teks URL polos, dan tingkat kliknya jatuh. Tidak ada satu pun error yang tercatat di mana pun.

Verifikasi bot: jangan percaya User-Agent

SALAH:
(http.user_agent contains "Googlebot")  โ†’ izinkan
# Siapa pun bisa mengirim User-Agent itu. Ini bukan pemeriksaan.

BENAR:
(cf.client.bot)  โ†’ izinkan
# Cloudflare memverifikasi lewat reverse DNS dan daftar IP resmi.
Aturan: izinkan crawler terverifikasi

Ekspresi: (cf.client.bot)
Aksi: Skip โ†’ Super Bot Fight Mode, Rate limiting

Bot Fight Mode

Bot Fight ModeSuper Bot Fight Mode
KendaliNyala/matiPer kategori bot
Bot terverifikasiDilewatiDilewati
Bot "kemungkinan otomatis"TantanganBisa diatur
RisikoBisa menantang pembaca sahLebih terkendali

Bot Fight Mode dasar bisa menantang pembaca sungguhan โ€” terutama yang memakai VPN, jaringan kantor besar, atau peramban dalam aplikasi media sosial. Untuk portal berita yang trafiknya datang dari tautan WhatsApp dan Instagram, itu risiko nyata. Kalau kamu menyalakannya, pantau rasio tantangan terhadap kunjungan selama beberapa hari pertama.

Crawler AI: keputusan bisnis

BotMembawa trafik balik?Pertimbangan
Crawler pelatihan modelTidakIsi dipakai tanpa rujukan; banyak penerbit memblokirnya
Crawler pencarian AI dengan sitasiSebagianMemberi tautan balik; sering dibiarkan
Pengambil per-permintaan penggunaYaMewakili pembaca sungguhan yang menempelkan tautanmu

Cloudflare menyediakan sakelar untuk memblokir crawler AI secara kategori, dan robots.txt untuk yang menghormatinya. Yang perlu kamu putuskan bukan teknisnya, melainkan posisi bisnismu โ€” dan itu percakapan dengan redaksi dan manajemen, bukan keputusan yang diambil sendiri oleh yang memasang aturannya.

# public/robots.txt
User-agent: *
Allow: /
Disallow: /akun/
Disallow: /admin/
Disallow: /api/
Disallow: /_server-islands/
Disallow: /*?q=
Disallow: /*?utm_

Sitemap: https://portal.contoh.id/sitemap-index.xml
Sitemap: https://portal.contoh.id/sitemap-berita.xml

Disallow: /*?q= mencegah crawler merayapi hasil pencarianmu. Halaman pencarian menghasilkan URL tak terbatas dengan isi tipis โ€” crawler yang menelusurinya akan membuang anggaran perayapannya di sana alih-alih di artikelmu, dan Google bisa menandai situsmu punya banyak konten berkualitas rendah. Ini masalah SEO yang nyata di portal dengan pencarian terbuka.

Scraping isi berbayar

Ini ancaman yang berbeda: bukan serangan, tapi pengambilan sistematis isi yang seharusnya dibayar. Pelakunya sering memakai akun berlangganan yang sah, sehingga tidak terlihat sebagai bot sama sekali.

SinyalLapis
Satu akun membuka > 100 artikel/jamAplikasi (Fase 5)
Pola waktu terlalu teraturAplikasi
Skor bot tinggi dengan sesi sahCloudflare + aplikasi
Banyak IP untuk satu akunAplikasi
Tidak pernah memuat aset, hanya HTMLCloudflare

Baris terakhir itu sinyal yang sederhana dan efektif: pembaca sungguhan mengunduh CSS, gambar, dan font. Scraper hanya mengambil HTML. Rasio HTML terhadap aset per sesi adalah pembeda yang sulit dipalsukan tanpa membuat scraping-nya jauh lebih mahal.

Yang harus dipantau

MetrikDi manaAlarm kalau
Permintaan diblokirSecurity EventsMelonjak tiba-tiba โ€” kemungkinan positif palsu
Rasio tantanganAnalytics> 2% dari pembaca manusia
Trafik GooglebotSearch Console + AnalyticsTurun โ€” sinyal paling penting
Cache hit ratioAnalyticsTurun mendadak

Latihan: nyalakan managed WAF rules dalam mode Log, dan setelah 48 jam tinjau Security Events. Cari permintaan sah yang tertangkap โ€” perhatikan khususnya POST dari jalur redaksi dan permintaan dari facebookexternalhit serta WhatsApp. Buat aturan skip untuk crawler terverifikasi memakai cf.client.bot, lalu verifikasi dengan Search Console bahwa Googlebot tidak mengalami peningkatan error perayapan.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.