كيف تفحص سجلات الخادم بحثاً عن زواحف الذكاء الاصطناعي
ابحث في حقل وكيل المستخدم بسجل الوصول عن رموز مثل GPTBot وOAI-SearchBot وClaudeBot وClaude-SearchBot وPerplexityBot، ثم انظر إلى رموز الحالة التي تلقّتها. وكيل المستخدم وحده لا يثبت شيئاً، فتحقق من كل عنوان IP مصدر بالمقارنة مع قائمة IP التي تنشرها الشركة، أو بالبحث العكسي والأمامي في DNS بالنسبة إلى Google وApple.
يقول robots.txt ما تطلبه من الزواحف. أما سجل الوصول فيُظهر ما حدث فعلاً: أي زواحف الذكاء الاصطناعي جاءت، وأي صفحات طلبت، وبماذا ردّ خادمك. وهو أكثر الأدلة مباشرةً بين يديك، ولا يحتاج إلا إلى ملفات السجل وسطر أوامر. تستخدم الأمثلة أدناه صيغة السجل المدمجة (combined) التي يستخدمها nginx وApache افتراضياً.
في هذه الصفحة
كيف تبدو زيارة زاحف ذكاء اصطناعي في سجل الوصول؟
في الصيغة المدمجة يحتوي كل سطر على عنوان IP للعميل، والوقت، وسطر الطلب، ورمز الحالة، وحجم الاستجابة، والمُحيل، ووكيل المستخدم. يعرّفها 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 ليس له سلسلة وكيل مستخدم منفصلة، وتقول Apple إن Applebot-Extended لا يزحف؛ كلاهما رمز في robots.txt فقط.
كيف أحصي زيارات زواحف الذكاء الاصطناعي؟
يضع تقسيم كل سطر عند علامة الاقتباس المزدوجة وكيل المستخدم في الحقل 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 يتغير أمران. الطلبات التي تحظرها الشبكة لا تصل إلى خادمك الأصلي، فلا تظهر في سجلاته إطلاقاً؛ فتحقق من أحداث الأمان في الشبكة نفسها. وما لم تستعد IP الزائر، يسجّل الخادم الأصلي عنوان الشبكة. فـ Cloudflare مثلاً ترسل IP الأصلي في الترويسة CF-Connecting-IP، ويسجّل الخادم افتراضياً عنوان 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 العكسي والأمامي. ابحث عن اسم المضيف للعنوان، وتحقق من نطاقه، ثم ابحث عن اسم المضيف هذا وتأكد من أنه يشير إلى العنوان نفسه:
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 زوراً.
كيف تبدو زواحف الذكاء الاصطناعي المزيفة؟
كثيراً ما تستعير أدوات الكشط وكيل مستخدم زاحف معروف لتتجاوز المرشحات. ومن علاماتها المعتادة:
- وكيل المستخدم يسمّي زاحفاً، لكن عنوان IP ليس في قائمة الشركة المنشورة، أو أن DNS العكسي لا يطابقه.
- المصدر شبكة سكنية أو مزوّد سحابي لا تدرجه الشركة.
- العميل لا يطلب robots.txt أبداً، أو يطلب مسارات يمنعها robots.txt لذلك الزاحف.
- معدل الطلبات أو نمطها يختلف بشدة عن الحركة الموثقة تحت الاسم نفسه، مثل دفعات طلبات على نقاط البحث أو تسجيل الدخول.
والمشكلة المعاكسة موجودة أيضاً: فالزاحف الذي يستخدم وكيل مستخدم عادياً لمتصفح لا يمكن تحديده من سطر السجل إطلاقاً. ففي 2025 قالت Cloudflare إنها رصدت Perplexity تزحف بوكلاء مستخدم غير معلنة تشبه المتصفحات من عناوين IP خارج نطاقاتها المنشورة؛ ونازعت Perplexity في هذا الوصف ونسبت جزءاً من الحركة إلى خدمة طرف ثالث. والسجلات وحدها لا تحسم حالات كهذه، ولهذا يهم التحقق عبر نطاقات IP المنشورة في الاتجاهين.
ما الذي لا تخبرك به السجلات؟
تُظهر السجلات ما وصل إلى خادمك. ولا تُظهر ما حظرته شبكة CDN قبل الخادم الأصلي، ولا ما إذا كانت صفحة أعادت 200 تحتوي النص أم هيكل سكربت فقط، ولا ما إذا كان الزاحف سيُسمح له لو جاء اليوم. وهي تغطي أيضاً الفترة التي تحتفظ بها فقط، وقد لا ترى المواقع الهادئة زواحف الذكاء الاصطناعي إلا نادراً.
في حساب AISeeWhy يمكنك رفع سجل وصول بالصيغة المدمجة (عادي أو .gz، حتى 50 MB)؛ فيُحلَّل ويُتخلَّص منه، وتُحصى طلبات كل زاحف ذكاء اصطناعي مع رموز حالتها وتُقارن بنطاقات IP التي تنشرها الشركات.
الأسئلة الشائعة
لماذا لا أرى Google-Extended في سجلاتي؟
تقول Google إن Google-Extended ليس له سلسلة وكيل مستخدم منفصلة. فالزحف تقوم به زواحف Google الحالية، والرمز يتحكم فقط في كيفية استخدام المحتوى. وينطبق الأمر نفسه على Applebot-Extended الذي تقول Apple إنه لا يزحف.
هل يمكنني الوثوق بوكيل المستخدم في سجلاتي؟
لا. يستطيع أي طرف إرسال أي وكيل مستخدم. تعامل معه كادعاء وأكّده بنطاقات IP التي تنشرها الشركة أو، في حالة Google وApple وCommon Crawl، ببحث DNS عكسي وأمامي.
لا تُظهر سجلاتي أي زيارة لزواحف الذكاء الاصطناعي. هل أنا محظور؟
ليس بالضرورة. فقد لا يكون الزاحف زارك بعد، أو قد تكون شبكة CDN حظرته قبل الخادم الأصلي، أو قد تسجّل سجلاتك عناوين IP الخاصة بالشبكة فقط. تحقق من أحداث الأمان في الشبكة واختبر الصفحة بوكيل المستخدم الخاص بكل زاحف.
هل حركة 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: بروتوكول استثناء الروبوتات
- Cloudflare: استعادة عناوين IP الأصلية للزوار
- Cloudflare: Perplexity تستخدم زواحف خفية غير معلنة لتجاوز توجيهات منع الزحف في المواقع
- Perplexity: وكلاء أم روبوتات؟ فهم الذكاء الاصطناعي على الويب المفتوح