איך לבדוק בלוגי השרת סורקי AI
חפשו בשדה ה-user agent של לוג הגישה טוקנים כמו GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot ו-PerplexityBot, ואז בדקו אילו קודי סטטוס הם קיבלו. user agent לבדו לא מוכיח דבר, ולכן בדקו כל כתובת IP של מקור מול רשימת ה-IP שהספק מפרסם, או באמצעות DNS הפוך וישיר עבור Google ו-Apple.
robots.txt אומר מה אתם מבקשים מהסורקים לעשות. לוג הגישה שלכם מראה מה קרה בפועל: אילו סורקי AI הגיעו, אילו עמודים ביקשו, ומה השרת שלכם ענה. זו הראיה הישירה ביותר שיש לכם, והיא לא דורשת יותר מקובצי הלוג וטרמינל. הדוגמאות כאן משתמשות בפורמט הלוג המשולב (combined) ש-nginx ו-Apache משתמשים בו כברירת מחדל.
בעמוד זה
איך ביקור של סורק AI נראה בלוג גישה?
בפורמט המשולב כל שורה מכילה את ה-IP של הלקוח, את הזמן, את שורת הבקשה, את קוד הסטטוס, את גודל התגובה, את ההפניה (referrer) ואת ה-user agent. nginx מגדיר אותו כ-$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent", והפורמט combined של Apache כולל את אותם שדות. ביקור של סורק האימון של OpenAI נראה כך:
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"
הטוקנים שכדאי לחפש הם אלה שהספקים מתעדים: GPTBot, OAI-SearchBot ו-ChatGPT-User (OpenAI); ClaudeBot, Claude-SearchBot ו-Claude-User (Anthropic); PerplexityBot ו-Perplexity-User (Perplexity); Googlebot, Applebot, meta-externalagent, meta-webindexer ו-CCBot. את Google-Extended ואת Applebot-Extended לא תראו לעולם. Google אומרת ש-Google-Extended אין מחרוזת user agent נפרדת, ו-Apple אומרת ש-Applebot-Extended לא סורק; שניהם טוקנים של robots.txt בלבד.
איך סופרים ביקורים של סורקי AI?
פיצול כל שורה לפי תו המרכאות הכפולות מציב את ה-user agent בשדה 6. התאמה לשדה הזה בלבד מונעת פגיעות שווא מכתובות URL שמכילות במקרה את שם הבוט. הפקודה הבאה סופרת ביקורים לפי סורק בלוג הנוכחי ובלוגים מסובבים ודחוסים:
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
התאימו את הנתיב ל-Apache, לרוב /var/log/apache2/access.log* או /var/log/httpd/access_log*. zcat -f קורא גם קבצים רגילים וגם קבצי gzip. אם סורק שציפיתם לו חסר, זה לבדו אינו הוכחה לחסימה: ייתכן שהוא פשוט לא ביקר בתקופה שהלוגים שלכם מכסים.
מה כל סורק קיבל בפועל?
התשובות חשובות יותר מהביקורים. סורק שמקבל 403 בכל בקשה ביקר אבל לא קרא דבר. הפקודות האלה מראות קודי סטטוס, את הנתיבים המבוקשים ביותר, ואם הסורק הביא את 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
רוב התגובות 200 הן מה שרצוי. הרבה תגובות 403 או 429 מצביעות על כלל בחומת האש או על הגבלת קצב. תגובות 5xx על robots.txt חמורות: לפי RFC 9309 סורק שמקבל שגיאת שרת על robots.txt חייב להניח שכל האתר אסור לסריקה.
אם האתר שלכם יושב מאחורי CDN, שני דברים משתנים. בקשות שה-CDN חוסם לא מגיעות לשרת המקור, ולכן הן כלל לא מופיעות בלוגים שלו; בדקו במקום זאת את אירועי האבטחה של ה-CDN עצמו. וכל עוד לא שחזרתם את ה-IP של המבקר, שרת המקור מתעד את הכתובת של ה-CDN. Cloudflare, למשל, שולחת את ה-IP המקורי בכותרת CF-Connecting-IP ומתעדת כברירת מחדל כתובת של Cloudflare.
איך מוודאים שביקור באמת הגיע מ-OpenAI, מ-Anthropic או מ-Perplexity?
הספקים האלה מפרסמים את טווחי ה-IP שהסוכנים שלהם משתמשים בהם: OpenAI ב-openai.com/gptbot.json, ב-openai.com/searchbot.json וב-openai.com/chatgpt-user.json; Anthropic ב-claude.com/crawling/bots.json; Perplexity ב-perplexity.ai/perplexitybot.json וב-perplexity.ai/perplexity-user.json. Anthropic אומרת שכתובת IP של מקור שברשימה שלה מצביעה על כך שהסורק מגיע מ-Anthropic. אף אחד משלושת אלה לא מתעד אימות באמצעות DNS הפוך, ולכן השתמשו ברשימות.
לקבצים יש מבנה משותף, רשימת prefixes של ערכי ipv4Prefix או ipv6Prefix, ולכן סקריפט קטן אחד בודק כתובת IP מול כל אחד מהם:
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
כדי לרשום את כתובות ה-IP שטענו להיות סורק מסוים, הריצו awk -F'"' '$6 ~ /GPTBot/ {split($1, a, " "); print a[1]}' על הלוג והעבירו את הפלט דרך sort | uniq -c | sort -rn. בדקו כל אחת מול הרשימה המתאימה. הרשימות משתנות, ולכן הביאו אותן מחדש במקום לשמור עותק ישן.
איך מאמתים את Googlebot, את Applebot ואת CCBot?
Google, Apple ו-Common Crawl מתעדות בדיקת DNS הפוך וישיר. חפשו את שם המארח של ה-IP, בדקו את הדומיין שלו, ואז חפשו את שם המארח הזה וודאו שהוא מצביע חזרה לאותו IP:
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
אצל Google שם המארח חייב להסתיים ב-googlebot.com, ב-google.com או ב-googleusercontent.com, בהתאם לסורק; Google מפרסמת גם את הטווחים שלה, עם Googlebot ב-common-crawlers.json. אצל Apple הוא חייב להיות ב-applebot.apple.com, עם הטווחים ב-applebot.json. אצל Common Crawl הוא חייב להיות תחת crawl.commoncrawl.org, ו-Common Crawl מזהירה שסורקים אחרים טוענים בשקר לשם CCBot.
איך נראים סורקי AI מזויפים?
כותבי סקרייפרים לוקחים לעיתים קרובות את ה-user agent של סורק מוכר כדי לעבור מסננים. סימנים אופייניים:
- ה-user agent מציין סורק, אבל ה-IP לא ברשימה שהספק מפרסם, או שה-DNS ההפוך שלו לא תואם.
- המקור הוא רשת ביתית או ספק ענן שהספק לא מונה.
- הלקוח אף פעם לא מבקש את robots.txt, או מבקש נתיבים ש-robots.txt אוסר עבור אותו סורק.
- קצב הבקשות או הדפוס שלהן שונה בחדות מהתעבורה המאומתת תחת אותו שם, למשל התפרצויות מול נקודות קצה של חיפוש או כניסה.
קיימת גם הבעיה ההפוכה: סורק שמשתמש ב-user agent רגיל של דפדפן אי אפשר לזהות משורת הלוג בכלל. ב-2025 Cloudflare אמרה שצפתה ב-Perplexity סורקת עם user agents לא מוצהרים הדומים לדפדפן, מכתובות IP מחוץ לטווחים שהיא מפרסמת; Perplexity חלקה על התיאור הזה ויחסה חלק מהתעבורה לשירות של צד שלישי. לוגים לבדם לא יכולים להכריע במקרים כאלה, וזו הסיבה שאימות לפי טווחי IP שמפורסמים חשוב בשני הכיוונים.
מה הלוגים לא יכולים לומר לכם?
הלוגים מראים מה הגיע לשרת שלכם. הם לא מראים מה ה-CDN חסם לפני שרת המקור, אם עמוד שהחזיר 200 הכיל את הטקסט או רק מעטפת של סקריפט, או אם סורק היה מורשה אילו הגיע היום. הם גם מכסים רק את התקופה שאתם שומרים, ואתרים שקטים עשויים לראות סורקי AI לעיתים רחוקות.
בחשבון AISeeWhy אפשר להעלות לוג גישה בפורמט משולב (רגיל או .gz, עד 50 MB); הוא מנותח ונמחק, והבקשות של כל סורק AI נספרות עם קודי הסטטוס שלהן ונבדקות מול טווחי ה-IP שהספקים מפרסמים.
שאלות נפוצות
למה אני לא רואה את Google-Extended בלוגים שלי?
Google אומרת ש-Google-Extended אין מחרוזת user agent נפרדת. הסריקה נעשית על ידי הסורקים הקיימים של Google, והטוקן רק שולט באופן שבו מותר להשתמש בתוכן. אותו דבר חל על Applebot-Extended, שלדברי Apple אינו סורק.
האם אפשר לסמוך על ה-user agent בלוגים שלי?
לא. כל אחד יכול לשלוח כל user agent. התייחסו אליו כאל טענה ואשרו אותה באמצעות טווחי ה-IP שהספק מפרסם או, עבור Google, Apple ו-Common Crawl, באמצעות חיפוש DNS הפוך וישיר.
הלוגים שלי לא מראים ביקורים של סורקי AI. האם חסמו אותי?
לא בהכרח. ייתכן שהסורק עדיין לא ביקר, ש-CDN חסם אותו לפני שרת המקור, או שהלוגים שלכם מתעדים רק כתובות IP של ה-CDN. בדקו את אירועי האבטחה של ה-CDN ובדקו את העמוד עם ה-user agent של כל סורק.
האם תעבורה של ChatGPT-User היא סורק?
OpenAI אומרת ש-ChatGPT-User משמש לפעולות מסוימות של משתמשים ואינו משמש לסריקת הרשת באופן אוטומטי. הביקורים שלו בדרך כלל באים אחרי שאדם שואל את ChatGPT על עמוד, ולכן הם מגיעים בכמויות קטנות.
מקורות
- nginx: ngx_http_log_module (פורמט לוג משולב)
- Apache HTTP Server 2.4: קובצי לוג
- OpenAI: סקירת הסורקים של OpenAI
- Anthropic: האם Anthropic סורקת נתונים מהרשת, ואיך בעלי אתרים יכולים לחסום את הסורק?
- Perplexity: הסורקים של Perplexity
- Google: אימות סורקים ומנגנוני הבאה של Google
- Google: סורקים נפוצים, כולל Google-Extended
- Apple: על Applebot
- Common Crawl: CCBot
- RFC 9309: פרוטוקול Robots Exclusion
- Cloudflare: שחזור כתובות ה-IP המקוריות של מבקרים
- Cloudflare: Perplexity משתמשת בסורקים חמקניים ולא מוצהרים כדי לעקוף הנחיות אי-סריקה של אתרים
- Perplexity: סוכנים או בוטים? להבין AI ברשת הפתוחה