Laravel Shieldv1.2.x
Bot dan crawler
Shield bisa saja memblokir Googlebot kalau tidak ada penanganan khusus. Halaman ini menjelaskan bagaimana Shield memastikan crawler asli tetap bisa mengindeks situs Anda.
Masalah yang diselesaikan
Section titled “Masalah yang diselesaikan”Crawler sah dan bot jahat sering memakai User-Agent yang sama. Contohnya, siapa pun bisa mengirim header:
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)Kalau Shield hanya membaca User-Agent, request itu dianggap Googlebot. Dua kemungkinan yang sama-sama tidak diinginkan:
- penyerang menyamar sebagai Googlebot supaya tidak di-rate-limit,
- aplikasi Anda memblokir Googlebot asli sehingga halaman tidak masuk indeks.
Shield menyelesaikannya dengan memverifikasi klaim itu, bukan dengan mempercayainya.
Mode bot
Section titled “Mode bot”SHIELD_BOT_MODE=observe| Nilai | Perilaku |
|---|---|
off |
Verifikasi crawler dimatikan. Bot diperlakukan seperti klien biasa. |
observe |
Default. Bot dicatat, tidak pernah diblokir karena faktor bot. |
challenge |
Bot yang gagal diverifikasi boleh di-challenge. |
Untuk kebanyakan situs, biarkan di observe.
Dua tingkat kepercayaan
Section titled “Dua tingkat kepercayaan”| Tingkat | Yang terjadi |
|---|---|
| Crawler terverifikasi | Semua sinyal perilaku dinolkan. Bot bebas mengindeks tanpa kena rate limit. Aturan (signature) tetap diperiksa. |
| Klaim tidak terverifikasi | Mendapat sinyal unverified_crawler_claim dengan skor kecil. Bot tetap boleh, tapi tercatat. |
Perhatikan kata “signature tetap diperiksa”. Kalau Googlebot meminta
/.env, request itu tetap diblokir. Kepercayaan bot hanya berlaku untuk
membebaskan sinyal perilaku, bukan untuk melewati aturan.
Cara verifikasi
Section titled “Cara verifikasi”Shield melakukan dua pemeriksaan berurutan.
1. Hostname (reverse DNS)
Section titled “1. Hostname (reverse DNS)”Shield membalik IP sumber menjadi nama host, lalu memeriksa apakah nama itu berakhiran dengan suffix yang sah untuk crawler tersebut:
'verification' => [ 'hostnames' => [ 'googlebot' => ['.googlebot.com', '.google.com'], 'bingbot' => ['.search.msn.com'], 'yandexbot' => ['.yandex.ru', '.yandex.net'], // ... ],],Kalau 203.0.113.10 membalas dns.googlebot.com, verifikasinya lolos.
2. Rentang IP (opsional, tapi disarankan)
Section titled “2. Rentang IP (opsional, tapi disarankan)”Kalau hostname tidak tersedia — DNS lambat, atau diblokir jaringan Anda — verifikasi bisa mengandalkan CIDR resmi:
'verification' => [ 'ip_ranges' => [ 'googlebot' => ['66.249.64.0/19', '66.249.65.0/20'], 'bingbot' => ['157.55.0.0/16'], ],],Untuk pemeliharaan, isi ip_ranges dengan daftar resmi:
- Google:
googlebot.googlebot.comdanspecial-crawlers.googlebot.com - Bing:
www.bing.com/toolbar - Yandex:
yandex.com/bots
Masa berlaku hasil verifikasi
Section titled “Masa berlaku hasil verifikasi”'verification' => [ 'ttl_hours' => 24,],Reverse-DNS tidak dijalankan untuk setiap request. Hasilnya disimpan 24 jam. Ini menjaga performa, sekaligus membatasi diperiksa berulang kali untuk IP yang berpindah-pindah.
Mengubah skor klaim tak terverifikasi
Section titled “Mengubah skor klaim tak terverifikasi”SHIELD_BOT_UNVERIFIED_CLAIM_SIGNAL=4Nilai bawaan 4 sengaja rendah: cukup tercatat di log, belum cukup untuk
memicu challenge. Kalau Anda melihat banyak bot palsu kena challenge, naikkan
ke 10. Kalau Anda melihat crawler sah Anda ikut kena challenge, turunkan atau
matikan verifikasinya.
Daftar User-Agent yang dikenali
Section titled “Daftar User-Agent yang dikenali”Shield mengenali 18 crawler secara bawaan:
| Kelompok | User-Agent |
|---|---|
| Mesin pencari | googlebot, bingbot, yandexbot, baiduspider, duckduckbot |
| SEO | ahrefsbot, semrushbot, dotbot, mj12bot, bytespider |
| AI | gptbot, chatgpt-user, claudebot, anthropic, openai, oai-searchbot, perplexitybot |
| Lainnya | ccbot |
Daftar ini bisa ditambah:
'bots' => [ 'known_agents' => [ 'googlebot', 'bingbot', 'yandexbot', 'my-own-monitor', // monitor internal Anda ],],Kalau Googlebot Anda diblokir
Section titled “Kalau Googlebot Anda diblokir”Coba langkah ini berurutan.
-
Cek apakah IP-nya benar-benar Googlebot. Buka
https://developers.google.com/search/tools/crawler-overview, atau balik IP-nya secara manual. -
Isi
ip_rangesGoogle. Ini menghilangkan ketergantungan pada DNS. -
Naikkan
ttl_hourssementara kalau DNS Anda sering lambat:'verification' => ['ttl_hours' => 168], // 7 hari -
Periksa log dengan
php artisan shield:reportuntuk melihat apakah bot ditolak karenaunverified_crawler_claim.
Kalau AI bot tidak boleh diakses
Section titled “Kalau AI bot tidak boleh diakses”Rule Shield mencocokkan URI dan body, bukan User-Agent — jadi tidak ada
cara memberi skor berdasarkan gptbot atau claudebot.
Yang bisa Anda lakukan:
| Tujuan | Cara |
| Mengurangi beban tanpa memblokir |
| Menahan AI crawler | robots.txt plus aturan di level CDN. |
| Mengurangi beban tanpa memblokir | Naikkan behavior.suspicious_user_agents dengan nama AI crawler, supaya dapat sinyal lemah +2 dan tercatat di log. |
| Memblokir sepenuhnya | Aturan di level reverse proxy atau CDN. |
Untuk dua hal terakhir, intervene sedekat mungkin dengan pengunjung — di
Cloudflare, atau di nginx — jauh lebih murah daripada membakar siklus CPU
PHP untuk setiap request.
# Contoh di nginx: blokir AI crawler sebelum menyentuh PHPif ($http_user_agent ~* "(gptbot|claudebot|perplexitybot)") { return 403;}Powered by PT Ganadev Multi Solusi