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
| Langkah | Durasi |
|---|---|
| 1. Nyalakan managed rules dalam mode Log saja | 1โ2 minggu |
| 2. Tinjau Security Events; cari positif palsu | โ |
| 3. Buat aturan skip untuk yang sah | โ |
| 4. Ubah ke Managed Challenge | 1 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
| Bot | Wajib? | Akibat kalau diblokir |
|---|---|---|
| Googlebot / Googlebot-News | Mutlak | Hilang dari Google dan Google News |
| Bingbot | Ya | Hilang dari Bing |
| facebookexternalhit | Ya | Pratinjau tautan di Facebook rusak |
| Twitterbot | Ya | Kartu tautan rusak |
| Ya | Pratinjau rusak โ di Indonesia ini jalur berbagi terbesar | |
| Bot pemantauan milikmu | Ya | Alarm 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 Mode | Super Bot Fight Mode | |
|---|---|---|
| Kendali | Nyala/mati | Per kategori bot |
| Bot terverifikasi | Dilewati | Dilewati |
| Bot "kemungkinan otomatis" | Tantangan | Bisa diatur |
| Risiko | Bisa menantang pembaca sah | Lebih 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
| Bot | Membawa trafik balik? | Pertimbangan |
|---|---|---|
| Crawler pelatihan model | Tidak | Isi dipakai tanpa rujukan; banyak penerbit memblokirnya |
| Crawler pencarian AI dengan sitasi | Sebagian | Memberi tautan balik; sering dibiarkan |
| Pengambil per-permintaan pengguna | Ya | Mewakili 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.
| Sinyal | Lapis |
|---|---|
| Satu akun membuka > 100 artikel/jam | Aplikasi (Fase 5) |
| Pola waktu terlalu teratur | Aplikasi |
| Skor bot tinggi dengan sesi sah | Cloudflare + aplikasi |
| Banyak IP untuk satu akun | Aplikasi |
| Tidak pernah memuat aset, hanya HTML | Cloudflare |
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
| Metrik | Di mana | Alarm kalau |
|---|---|---|
| Permintaan diblokir | Security Events | Melonjak tiba-tiba โ kemungkinan positif palsu |
| Rasio tantangan | Analytics | > 2% dari pembaca manusia |
| Trafik Googlebot | Search Console + Analytics | Turun โ sinyal paling penting |
| Cache hit ratio | Analytics | Turun 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.