Cara memeriksa log server Anda untuk crawler AI
Cari token seperti GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, dan PerplexityBot di kolom user agent log akses Anda, lalu lihat kode status yang mereka terima. User agent saja tidak membuktikan apa pun, jadi cocokkan setiap IP sumber dengan daftar IP yang dipublikasikan vendor, atau dengan DNS terbalik dan maju untuk Google dan Apple.
Robots.txt menyatakan apa yang Anda minta dari crawler. Log akses Anda menunjukkan apa yang sebenarnya terjadi: crawler AI mana yang datang, halaman mana yang diminta, dan apa yang dijawab server Anda. Ini bukti paling langsung yang Anda miliki, dan hanya butuh file log dan terminal. Contoh di bawah memakai format log combined yang menjadi bawaan nginx dan Apache.
Di halaman ini
- Seperti apa kunjungan crawler AI di log akses?
- Bagaimana cara menghitung kunjungan crawler AI?
- Apa yang sebenarnya diterima setiap crawler?
- Bagaimana cara memverifikasi bahwa kunjungan benar-benar berasal dari OpenAI, Anthropic, atau Perplexity?
- Bagaimana cara memverifikasi Googlebot, Applebot, dan CCBot?
- Seperti apa crawler AI palsu?
- Apa yang tidak bisa dikatakan log?
Seperti apa kunjungan crawler AI di log akses?
Dalam format combined, setiap baris berisi IP klien, waktu, baris permintaan, kode status, ukuran respons, referrer, dan user agent. nginx mendefinisikannya sebagai $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent", dan format combined Apache memiliki kolom yang sama. Kunjungan dari crawler pelatihan OpenAI terlihat seperti ini:
20.171.206.5 - - [12/Nov/2026:10:00:01 +0000] "GET /pricing HTTP/1.1" 200 5120 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"
Token yang dicari adalah yang didokumentasikan para vendor: GPTBot, OAI-SearchBot, dan ChatGPT-User (OpenAI); ClaudeBot, Claude-SearchBot, dan Claude-User (Anthropic); PerplexityBot dan Perplexity-User (Perplexity); Googlebot, Applebot, meta-externalagent, meta-webindexer, dan CCBot. Anda tidak akan pernah melihat Google-Extended atau Applebot-Extended. Google menyatakan Google-Extended tidak memiliki string user agent terpisah, dan Apple menyatakan Applebot-Extended tidak meng-crawl; keduanya hanya token robots.txt.
Bagaimana cara menghitung kunjungan crawler AI?
Memecah setiap baris pada tanda kutip ganda menempatkan user agent di kolom 6. Mencocokkan hanya kolom itu menghindari hasil keliru dari URL yang kebetulan memuat nama bot. Perintah ini menghitung kunjungan per crawler di log saat ini dan log terkompresi hasil rotasi:
zcat -f /var/log/nginx/access.log* \
| awk -F'"' '{print $6}' \
| grep -Eo 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User|Googlebot|bingbot|Applebot|meta-externalagent|meta-webindexer|CCBot' \
| sort | uniq -c | sort -rn
Sesuaikan jalurnya untuk Apache, sering kali /var/log/apache2/access.log* atau /var/log/httpd/access_log*. zcat -f membaca file biasa maupun gzip. Jika crawler yang Anda harapkan tidak ada, itu saja bukan bukti pemblokiran: bisa jadi ia memang belum berkunjung pada periode yang dicakup log Anda.
Apa yang sebenarnya diterima setiap crawler?
Kunjungan kurang penting daripada jawaban. Crawler yang menerima 403 pada setiap permintaan sudah berkunjung tetapi tidak membaca apa pun. Perintah-perintah ini menampilkan kode status, jalur yang paling sering diminta, dan apakah crawler mengambil robots.txt:
# Status codes returned to PerplexityBot
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /PerplexityBot/ {split($3, s, " "); print s[1]}' | sort | uniq -c
# Most requested paths for OAI-SearchBot
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /OAI-SearchBot/ {split($2, r, " "); print r[2]}' | sort | uniq -c | sort -rn | head -20
# Did ClaudeBot fetch robots.txt, and what did it get?
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /ClaudeBot/ && $2 ~ /robots\.txt/ {split($3, s, " "); print s[1]}' | sort | uniq -c
Sebagian besar 200 adalah yang Anda inginkan. Banyak 403 atau 429 menunjuk ke aturan firewall atau pembatasan laju. Jawaban 5xx pada robots.txt serius: menurut RFC 9309, crawler yang menerima error server untuk robots.txt harus menganggap seluruh situs dilarang.
Jika situs Anda berada di balik CDN, dua hal berubah. Permintaan yang diblokir CDN tidak pernah sampai ke origin, sehingga tidak muncul sama sekali di lognya; periksa peristiwa keamanan CDN itu sendiri. Dan kecuali Anda memulihkan IP pengunjung, origin mencatat alamat CDN. Cloudflare, misalnya, mengirim IP asli di header CF-Connecting-IP dan secara bawaan mencatat IP Cloudflare.
Bagaimana cara memverifikasi bahwa kunjungan benar-benar berasal dari OpenAI, Anthropic, atau Perplexity?
Vendor-vendor ini mempublikasikan rentang IP yang dipakai agen mereka: OpenAI di openai.com/gptbot.json, openai.com/searchbot.json, dan openai.com/chatgpt-user.json; Anthropic di claude.com/crawling/bots.json; Perplexity di perplexity.ai/perplexitybot.json dan perplexity.ai/perplexity-user.json. Anthropic menyatakan bahwa IP sumber yang ada di daftarnya menunjukkan crawler itu berasal dari Anthropic. Ketiganya tidak mendokumentasikan verifikasi DNS terbalik, jadi gunakan daftarnya.
File-file ini memiliki bentuk yang sama, yaitu daftar prefixes berisi entri ipv4Prefix atau ipv6Prefix, sehingga satu skrip kecil bisa mencocokkan IP dengan salah satunya:
python3 - 20.171.206.5 https://openai.com/gptbot.json <<'EOF'
import ipaddress, json, sys, urllib.request
ip = ipaddress.ip_address(sys.argv[1])
req = urllib.request.Request(sys.argv[2], headers={"User-Agent": "log-check"})
prefixes = json.load(urllib.request.urlopen(req))["prefixes"]
nets = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix")) for p in prefixes]
print(ip, "listed" if any(ip in n for n in nets) else "NOT listed")
EOF
Untuk mendaftar IP yang mengaku sebagai crawler tertentu, jalankan awk -F'"' '$6 ~ /GPTBot/ {split($1, a, " "); print a[1]}' pada log lalu alirkan ke sort | uniq -c | sort -rn. Periksa masing-masing terhadap daftar yang sesuai. Daftar ini berubah, jadi ambil yang terbaru, jangan menyimpan salinan lama.
Bagaimana cara memverifikasi Googlebot, Applebot, dan CCBot?
Google, Apple, dan Common Crawl mendokumentasikan pemeriksaan DNS terbalik dan maju. Cari nama host dari IP, periksa domainnya, lalu cari nama host itu dan pastikan ia menunjuk kembali ke IP yang sama:
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1
Untuk Google, nama host harus berakhiran googlebot.com, google.com, atau googleusercontent.com, tergantung crawler-nya; Google juga mempublikasikan rentangnya, dengan Googlebot di common-crawlers.json. Untuk Apple, harus berada di applebot.apple.com, dengan rentang di applebot.json. Untuk Common Crawl, harus berada di bawah crawl.commoncrawl.org, dan Common Crawl memperingatkan bahwa crawler lain secara palsu memakai nama CCBot.
Seperti apa crawler AI palsu?
Scraper sering meminjam user agent crawler terkenal untuk lolos dari filter. Tanda-tanda yang umum:
- User agent menyebut sebuah crawler, tetapi IP-nya tidak ada di daftar yang dipublikasikan vendor itu, atau DNS terbaliknya tidak cocok.
- Sumbernya jaringan residensial atau penyedia cloud yang tidak dicantumkan vendor.
- Klien tidak pernah meminta robots.txt, atau meminta jalur yang dilarang robots.txt untuk crawler tersebut.
- Laju atau pola permintaan berbeda tajam dari lalu lintas terverifikasi dengan nama yang sama, misalnya lonjakan ke endpoint pencarian atau login.
Masalah sebaliknya juga ada: crawler yang memakai user agent browser biasa tidak bisa dikenali dari baris log sama sekali. Pada 2025 Cloudflare menyatakan telah mengamati Perplexity meng-crawl dengan user agent mirip browser yang tidak dideklarasikan dari IP di luar rentang yang dipublikasikannya; Perplexity membantah penjelasan itu dan mengaitkan sebagian lalu lintas dengan layanan pihak ketiga. Log saja tidak bisa memutuskan kasus seperti ini, itulah sebabnya verifikasi lewat rentang IP yang dipublikasikan penting ke dua arah.
Apa yang tidak bisa dikatakan log?
Log menunjukkan apa yang sampai ke server Anda. Log tidak menunjukkan apa yang diblokir CDN sebelum origin, apakah halaman yang mengembalikan 200 memuat teks atau hanya cangkang skrip, atau apakah sebuah crawler akan diizinkan jika datang hari ini. Log juga hanya mencakup periode yang Anda simpan, dan situs yang sepi mungkin jarang dikunjungi crawler AI.
Di akun AISeeWhy Anda bisa mengunggah log akses dalam format combined (biasa atau .gz, hingga 50 MB); log dianalisis lalu dibuang, dan permintaan tiap crawler AI dihitung beserta kode statusnya serta dicocokkan dengan rentang IP yang dipublikasikan vendor.
Pertanyaan yang sering diajukan
Mengapa saya tidak melihat Google-Extended di log saya?
Google menyatakan Google-Extended tidak memiliki string user agent terpisah. Crawling dilakukan oleh crawler Google yang sudah ada, dan token hanya mengatur bagaimana konten boleh dipakai. Hal yang sama berlaku untuk Applebot-Extended, yang menurut Apple tidak meng-crawl.
Bisakah saya memercayai user agent di log saya?
Tidak. Siapa pun bisa mengirim user agent apa pun. Perlakukan sebagai klaim dan konfirmasikan dengan rentang IP yang dipublikasikan vendor atau, untuk Google, Apple, dan Common Crawl, pencarian DNS terbalik dan maju.
Log saya tidak menunjukkan kunjungan crawler AI. Apakah saya diblokir?
Belum tentu. Crawler mungkin belum berkunjung, CDN Anda mungkin memblokirnya sebelum origin, atau log Anda mungkin hanya mencatat alamat IP CDN. Periksa peristiwa keamanan CDN Anda dan uji halaman dengan user agent setiap crawler.
Apakah lalu lintas ChatGPT-User termasuk crawler?
OpenAI menyatakan ChatGPT-User dipakai untuk tindakan pengguna tertentu dan tidak dipakai untuk meng-crawl web secara otomatis. Kunjungannya biasanya mengikuti seseorang yang bertanya ke ChatGPT tentang sebuah halaman, sehingga jumlahnya kecil.
Sumber
- nginx: ngx_http_log_module (combined log format)
- Apache HTTP Server 2.4: Log files
- OpenAI: Overview of OpenAI crawlers
- Anthropic: Does Anthropic crawl data from the web, and how can site owners block the crawler?
- Perplexity: Perplexity crawlers
- Google: Verifying Google crawlers and fetchers
- Google: Common crawlers, including Google-Extended
- Apple: About Applebot
- Common Crawl: CCBot
- RFC 9309: Robots Exclusion Protocol
- Cloudflare: Restoring original visitor IPs
- Cloudflare: Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives
- Perplexity: Agents or bots? Making sense of AI on the open web