Cara menulis robots.txt yang benar-benar memblokir scraper AI
Panduan praktis untuk memblokir crawler AI yang patuh, memahami batasan robots.txt, dan menambahkan kontrol sisi server di tempat yang penting.
Daftar isi
- Kebenaran yang kurang nyaman tentang robots.txt
- Apa yang dapat dan tidak dapat dilakukan robots.txt
- Mulailah dengan keputusan kebijakan Anda
- Template robots.txt yang masuk akal untuk memblokir AI
- Berhati-hatilah dengan Google-Extended
- Uji file seperti kode produksi
- Tambahkan kontrol sisi server untuk bot yang mengabaikan aturan
- Pembatasan laju
- Pemfilteran user-agent
- Kontrol IP dan ASN
- Autentikasi dan paywall
- Minimalisasi konten
- Gunakan tag meta robots untuk aturan tingkat halaman
- Pantau log setelah publikasi
- Jaga file tetap kecil dan ditinjau
- Intinya
Kebenaran yang kurang nyaman tentang robots.txt
File robots.txt bukanlah gembok. Ia adalah tanda di pintu.
Perbedaan itu penting ketika tim bertanya apakah mereka bisa “memblokir scraper AI” dengan satu file teks kecil. Untuk crawler bereputasi yang mengikuti Robots Exclusion Protocol, ya: robots.txt yang ditulis dengan benar dapat memberi tahu mereka agar tidak merayapi halaman Anda. Untuk scraper yang tidak dikenal, peniru, otomasi browser, dan bot yang memang tidak peduli, file itu tidak akan melakukan apa pun dengan sendirinya.
Jadi tujuan praktisnya bukan “membuat scraping mustahil.” Tujuannya adalah:
- Memberi tahu crawler AI yang patuh agar tidak menggunakan situs Anda.
- Menghindari pemblokiran mesin pencari atau layanan berguna secara tidak sengaja.
- Menambahkan kontrol sisi server yang lebih kuat untuk penyalahgunaan.
- Menjaga kebijakan tetap mudah dipelihara saat nama crawler berubah.
Itulah versi yang membosankan. Itu juga versi yang berhasil.
Apa yang dapat dan tidak dapat dilakukan robots.txt
File robots.txt berada di root sebuah situs:
https://example.com/robots.txt
Crawler memintanya sebelum merayapi. File tersebut berisi kelompok aturan. Setiap kelompok dimulai dengan satu atau beberapa baris User-agent, diikuti oleh direktif Allow atau Disallow.
Blokir seluruh situs yang sederhana terlihat seperti ini:
User-agent: GPTBot
Disallow: /
Itu berarti: jika Anda adalah GPTBot, jangan merayapi apa pun di situs ini.
Namun robots.txt memiliki batasan tegas:
- Ia bersifat sukarela. Pelaku buruk dapat mengabaikannya.
- Ia tidak mencegah URL diminta oleh browser atau skrip biasa.
- Ia tidak menghapus konten yang sudah dikumpulkan di tempat lain.
- Ia tidak mendefinisikan hak cipta, lisensi, atau hak pelatihan dengan sendirinya.
- Ia dapat salah dikonfigurasi sehingga memblokir bot yang keliru.
Jika Anda membutuhkan kontrol akses yang sungguh-sungguh, gunakan autentikasi, otorisasi, pembatasan laju, kontrol berbasis IP, manajemen bot, atau kontrol hukum. Robots.txt tetap berguna, tetapi ia seharusnya menjadi bagian dari strategi perlindungan konten yang lebih luas.
Ini mirip dengan masalah tata kelola web lainnya: kontrol yang terlihat jarang merupakan keseluruhan kontrol. Jika organisasi Anda sudah memiliki penggunaan AI yang tidak terkelola secara internal, prinsip yang sama berlaku; audit shadow AI cepat sering kali lebih berguna daripada berpura-pura bahwa satu dokumen kebijakan menyelesaikan masalah.
Mulailah dengan keputusan kebijakan Anda
Sebelum mengedit file, tentukan apa yang sebenarnya ingin Anda blokir.
Setidaknya ada empat hal berbeda yang biasanya dimaksud orang dengan “scraper AI”:
- Crawler yang digunakan untuk mengumpulkan data pelatihan.
- Crawler pencarian AI atau mesin jawaban.
- Fetcher yang dipicu pengguna, misalnya ketika seseorang meminta produk AI merangkum sebuah URL.
- Scraper generik yang berpura-pura menjadi browser biasa.
Anda mungkin ingin memblokir semuanya. Atau Anda mungkin menginginkan penemuan melalui pencarian sambil memilih keluar dari pelatihan model. Keduanya bukan kebijakan yang sama.
Misalnya, OpenAI mendokumentasikan user agent terpisah untuk tujuan yang berbeda, termasuk GPTBot, ChatGPT-User, dan OAI-SearchBot. Google menggunakan Google-Extended sebagai token kontrol untuk beberapa kasus penggunaan Gemini dan Vertex AI, sementara perayapan Google Search biasa ditangani oleh user agent Googlebot lainnya.
Pemisahan itu penting. Jika Anda memblokir user agent yang luas secara ceroboh, Anda dapat merusak visibilitas pencarian biasa saat mencoba memblokir pelatihan AI.
Template robots.txt yang masuk akal untuk memblokir AI
Berikut adalah titik awal konservatif untuk memblokir beberapa crawler terkait AI yang umum didokumentasikan sambil membiarkan crawler pencarian umum tetap berjalan:
# AI training and AI product crawlers
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-Web
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Amazonbot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Meta-ExternalAgent
Disallow: /
# Default rule for other crawlers
User-agent: *
Allow: /
Ini bukan daftar universal yang ajaib. Ini adalah pola yang dapat dipelihara.
Beberapa catatan:
Disallow: /berarti “jangan merayapi path apa pun.”User-agent: *berlaku untuk crawler yang tidak cocok dengan kelompok yang lebih spesifik.Allow: /tidak benar-benar wajib untuk kelompok default, tetapi membuat maksud Anda jelas.- Jaga komentar tetap singkat. Beberapa parser cukup toleran, tetapi robots.txt sebaiknya tetap membosankan.
- Jangan sertakan URL privat di robots.txt. File ini bersifat publik, dan mencantumkan path sensitif dapat mengiklankannya.
Poin terakhir layak diulang. Robots.txt bukan mekanisme kerahasiaan. Jika /client-contracts/ tidak boleh publik, lindungi dengan autentikasi. Jangan sekadar melakukan disallow.
Berhati-hatilah dengan Google-Extended
Google-Extended sering disalahpahami. Ini tidak sama dengan memblokir Google Search.
Menurut dokumentasi Google, Google-Extended adalah token produk mandiri yang dapat digunakan penerbit untuk mengelola apakah konten situs boleh membantu meningkatkan kemampuan Gemini dan Vertex AI tertentu. Memblokirnya seharusnya, dengan sendirinya, tidak memblokir Googlebot dari perayapan untuk Search.
Meski begitu, jangan mengganti semua direktif Google dengan blokir luas seperti ini kecuali Anda benar-benar bermaksud demikian:
User-agent: Googlebot
Disallow: /
Itu akan memberi tahu crawler utama Google Search agar tidak merayapi situs Anda. Untuk sebagian besar situs web publik, itu bukan yang Anda inginkan.
Perbedaan yang sama juga berlaku di tempat lain. Beberapa vendor memisahkan crawler pelatihan dari penjelajahan yang dipicu pengguna atau crawler pencarian AI. Vendor lain tidak. Anda perlu membaca dokumentasi untuk bot yang Anda pedulikan dan memperlakukan robots.txt sebagai file hidup, bukan kotak centang sekali saja.
Uji file seperti kode produksi
Robots.txt terlihat sederhana, sehingga mudah rusak.
Kesalahan umum meliputi:
- Mengunggahnya ke tempat yang salah, seperti
/assets/robots.txtalih-alih/robots.txt. - Menggunakan smart quotes yang disalin dari editor dokumen.
- Memblokir semua crawler dengan
User-agent: *danDisallow: /secara tidak sengaja. - Menganggap file milik satu domain berlaku untuk subdomain lain.
- Lupa bahwa host
http://,https://,www, dan non-wwwdapat ditangani berbeda tergantung pengaturan Anda.
Untuk situs multi-domain, periksa setiap host kanonis. File robots di https://www.example.com/robots.txt tidak otomatis mengatur https://app.example.com/robots.txt.
Saat men-debug, periksa respons HTTP yang sebenarnya, bukan hanya apa yang ditampilkan pratinjau CMS Anda. Anda menginginkan respons 200 OK, tipe konten text/plain jika memungkinkan, dan file persis yang Anda harapkan. Jika redirect, caching, atau aturan CDN terlibat, inspeksi header mentah membantu. Alur kerja dalam men-debug redirect dan header HTTP di produksi berlaku langsung di sini.
Tambahkan kontrol sisi server untuk bot yang mengabaikan aturan
Jika crawler patuh, robots.txt adalah sinyal paling bersih. Jika crawler bersifat abusif, Anda membutuhkan penegakan.
Kontrol praktis meliputi:
Pembatasan laju
Tetapkan ambang untuk pola permintaan yang tidak biasa: terlalu banyak halaman per menit, penelusuran pagination yang dalam, 404 berulang, atau volume permintaan tinggi dari sekumpulan kecil IP. Batas laju harus cukup longgar agar tidak menghukum pengguna sungguhan dan cukup ketat agar ekstraksi massal menjadi mahal.
Pemfilteran user-agent
Anda dapat memblokir user agent crawler AI yang terdokumentasi di server web, reverse proxy, CDN, atau lapisan aplikasi. Ini lebih kuat daripada robots.txt karena mengembalikan respons penolakan yang nyata.
Misalnya, Nginx dapat memblokir pola user agent, meskipun aturan produksi harus diuji dengan cermat:
if ($http_user_agent ~* "GPTBot|CCBot|ClaudeBot|Bytespider") {
return 403;
}
Ini bukan solusi anti-gagal. String user-agent mudah dipalsukan. Namun ini menghentikan trafik yang jujur atau malas dan mengurangi beban.
Kontrol IP dan ASN
Beberapa operator menerbitkan rentang IP, tetapi banyak ekosistem scraper tidak. Pemblokiran berbasis IP dapat bekerja untuk penyalahgunaan yang jelas, terutama dari rentang cloud hosting tanpa trafik pengguna normal, tetapi juga dapat menimbulkan false positive. Gunakan log sebelum aturan.
Autentikasi dan paywall
Jika konten tidak boleh disalin dalam skala besar, jangan letakkan konten lengkap pada URL publik. Robots.txt tidak cocok untuk materi rahasia, basis data berlisensi, komunitas privat, atau arsip berbayar.
Minimalisasi konten
Terkadang perlindungan terbaik bersifat arsitektural. Jangan mengekspos API yang tidak perlu, payload JSON besar, metadata tersembunyi, endpoint draf, atau arsip penuh jika halaman publik hanya membutuhkan subset kecil. Situs yang banyak menggunakan gambar juga perlu memikirkan metadata apa yang mereka publikasikan; logika privasi dalam menghapus metadata EXIF sebelum membagikan foto secara online juga berlaku untuk operasi konten.
Gunakan tag meta robots untuk aturan tingkat halaman
Robots.txt mengontrol perayapan. Tag meta robots dan header X-Robots-Tag mengontrol perilaku pengindeksan dan snippet untuk mesin pencari dan crawler yang patuh.
Misalnya:
<meta name="robots" content="noindex, noarchive">
Atau sebagai header HTTP:
X-Robots-Tag: noindex, noarchive
Ini bukan perisai khusus AI. Ini berguna ketika Anda ingin sebuah halaman dapat diakses tetapi tidak diindeks. Namun, jika Anda memblokir crawler agar tidak mengambil halaman melalui robots.txt, crawler itu mungkin tidak pernah melihat tag meta tingkat halaman. Jangan mengandalkan tag noindex pada URL yang dilarang dirayapi oleh crawler.
Aturan kasarnya:
- Gunakan robots.txt untuk mengurangi atau mencegah perayapan.
- Gunakan meta robots atau
X-Robots-Taguntuk mengontrol perilaku pengindeksan. - Gunakan kontrol sisi server untuk menegakkan akses.
Pantau log setelah publikasi
Menerbitkan file hanyalah langkah pertama. Setelah itu, periksa log Anda.
Cari:
- Permintaan ke
/robots.txtdari user agent yang Anda sebutkan. - Perayapan yang berlanjut setelah aturan disallow disajikan.
- User agent mencurigakan dengan volume tinggi.
- User agent yang menyerupai browser meminta ribuan halaman secara berurutan.
- Akses berulang ke feed, sitemap, halaman pencarian, dan pagination.
Jika bot meminta robots.txt, melihat disallow penuh, lalu berhenti, robots.txt telah menjalankan tugasnya. Jika terus berjalan, pindahkan bot itu ke penegakan: batas laju, blokir, atau autentikasi.
Tinjau juga eksposur sitemap Anda. Sitemap berguna bagi mesin pencari, tetapi juga merupakan peta yang nyaman bagi scraper. Itu tidak berarti Anda harus menghapusnya dari situs biasa. Artinya, Anda tidak boleh menyertakan URL yang tidak ingin Anda biarkan ditemukan oleh sistem publik.
Jaga file tetap kecil dan ditinjau
Robots.txt cenderung membusuk. Tim pemasaran menambahkan microsite kampanye. Developer menambahkan path staging. Vendor mengubah nama crawler-nya. Dua tahun kemudian tidak ada yang tahu mengapa separuh aturan itu ada.
Perlakukan sebagai konfigurasi:
- Simpan di version control jika memungkinkan.
- Tambahkan komentar singkat untuk setiap kelompok crawler AI.
- Tinjau setiap kuartal.
- Periksa dokumentasi vendor sebelum menambahkan aturan luas.
- Uji setelah perubahan CDN, CMS, atau hosting.
Jika situs Anda menerbitkan konten yang dibantu AI, pisahkan juga kebijakan crawler dari transparansi editorial. Memblokir scraper AI berkaitan dengan akses dan penggunaan ulang. Pengungkapan berkaitan dengan kepercayaan pembaca. Keduanya tumpang tindih secara etis, tetapi bukan kontrol yang sama. Pendekatan pengungkapan praktis dibahas dalam seperti apa pengungkapan AI yang jujur di situs web kecil.
<!-- tool-cta:start -->
💡 Coba ini: Setelah menambahkan aturan untuk crawler AI, konfirmasikan sintaksnya dengan Robots.txt Tester agar Anda tidak secara tidak sengaja memblokir bot yang sah juga.
<!-- tool-cta:end -->
Intinya
File robots.txt yang baik akan memblokir crawler AI yang patuh. Ia tidak akan menghentikan scraping yang gigih, string user-agent yang disalin, browser yang dikompromikan, atau orang yang menempelkan konten Anda ke sistem AI secara manual.
Itu tidak membuatnya tidak berguna. Itu menjadikannya satu lapisan.
Tulis aturan eksplisit untuk crawler AI yang terdokumentasi. Hindari blokir luas yang merusak visibilitas pencarian. Uji file yang disajikan, bukan drafnya. Pantau log. Tegakkan dengan kontrol sisi server ketika perilaku bergeser dari tidak diinginkan menjadi abusif.
Web selalu berjalan di atas campuran protokol, norma, dan penegakan. Robots.txt adalah lapisan norma. Gunakan, tetapi jangan mengiranya sebagai tembok.