מה זה user-triggered fetcher?
user-triggered fetcher הוא בוט ששולף עמוד כי משתמש ביקש זאת עכשיו, ולא כחלק מסריקה יזומה.
ההבדל בין user-triggered fetcher, ובקיצור fetcher, לסורק רגיל הוא מי לחץ על ההדק. Googlebot מחליט לבד מתי לסרוק אתכם. ChatGPT-User מגיע כי מישהו, ברגע זה, שאל את ChatGPT שאלה והמערכת החליטה שהתשובה נמצאת אצלכם. הבקשה היא שליח של משתמש אמיתי, לא של מנוע.
איך user-triggered fetchers עובדים
user-triggered fetcher פועל בבקשת משתמש: מישהו שאל שאלה, המערכת החליטה שהתשובה נמצאת בעמוד מסוים, והבקשה יוצאת אליו עכשיו. ומכיוון שהשליפה יוצאת בשם משתמש, חל עליה הכלל שהכי מבלבל אנשים: robots.txt ברוב המקרים לא עוצר אותה. ההיגיון מתועד אצל החברות עצמן: הקובץ נועד לרסן סריקה אוטומטית, ובקשה שמשתמש יזם היא לא סריקה אוטומטית. גוגל כותבת שה-fetchers שלה מתעלמים ככלל מהכללים כי המשתמש ביקש את השליפה, ו-OpenAI כותבת ש-robots.txt לא בהכרח חל על ChatGPT-User. יוצאת הדופן היא Anthropic, שמצהירה ש-Claude-User דווקא מכבד robots.txt.
לכן חסימה של fetcher שמתעלם מ-robots.txt עוברת דרך השרת, לא דרך הקובץ, ובהמשך גם web-bot-auth, שגוגל כבר מנסה על Google-Agent.
איך user-triggered fetchers נראים בלוגים של השרת
כך שלושת ה-fetchers הגדולים מזדהים בשורת ה-user-agent:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +Claude-User@anthropic.com)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; compatible; Google-Agent; +https://developers.google.com/crawling/docs/crawlers-fetchers/google-agent) Chrome/W.X.Y.Z Safari/537.36מה שמזהה את הבוט הוא הטוקן, ChatGPT-User/1.0 או Claude-User/1.0 או Google-Agent. קידומת ה-Mozilla היא קישוט דפדפן, וזו בדיוק הסיבה שכללי WAF גנריים מפספסים, ו-Chrome/W.X.Y.Z אצל גוגל הוא פלייסהולדר מילולי, לא ערך לחיפוש. פירוט מלא, חברה אחרי חברה, יש במדריך הבוטים של OpenAI, במדריך הבוטים של קלוד ובמדריך הבוטים של גוגל. וכל שורה כזאת היא כמעט תמיד שאלה של משתמש שהובילה לעמוד שלכם, והזדמנות לציטוט בתשובה.
איך user-triggered fetchers קשורים ל-SEO ול-GEO
בקשות fetcher הן רגע האמת: הביקור שקורה שנייה לפני שהתשובה נכתבת. אתר שחוסם fetchers של מנועי AI, במכוון או בטעות דרך כלל שגוי ב-WAF, מוחק את עצמו מהתשובה בדיוק ברגע שמשתמש שאל. כל בקשת fetcher היא ציטוט פוטנציאלי, אבל לא כל ציטוט עובר דרך fetcher: ב-ChatGPT, ההופעה בתשובות החיפוש נקבעת לפי האינדקס של OAI-SearchBot ולא לפי ChatGPT-User. לכן תנועת fetchers בלוגים היא המינימום של הנראות שלכם ב-AI, לא התמונה המלאה.
ההבדל בין user-triggered fetcher ל-crawler
crawler בונה אינדקס לטווח ארוך, ומכבד robots.txt אם הוא בוט הגון. fetcher משרת משתמש בזמן אמת ולרוב פטור ממנו. כשמנתחים לוגים או בונים מדיניות חסימה, חובה להפריד בין השניים: חסימת crawler מוציאה אתכם מהאינדקס של מחר, חסימת fetcher מוציאה אתכם מהתשובה של עכשיו.
שאלות על user-triggered fetcher
האם user-triggered fetchers מכבדים robots.txt?▼
user-triggered fetchers ברובם לא מכבדים את robots.txt, וזה מתועד. גוגל כותבת שמכיוון שהמשתמש ביקש את השליפה, ה-fetchers שלה מתעלמים ככלל מכללי robots.txt, ו-OpenAI כותבת על ChatGPT-User שהכללים לא בהכרח חלים עליו.
היוצא מן הכלל הוא Claude-User של Anthropic, שמצהירה שהוא כן מכבד את הקובץ. ההיגיון בשאר המקרים: המשתמש ביקש, לא הבוט.
אילו user-triggered fetchers רואים בלוגים?▼
ChatGPT-User של OpenAI, Claude-User של Anthropic, ו-Google-Agent של גוגל, לצד ותיקים של גוגל כמו Feedfetcher ו-Google Site Verifier. לכל אחת מהחברות יש רשימת IP רשמית לאימות.
האם אפשר לחסום user-triggered fetchers?▼
את רוב ה-user-triggered fetchers חוסמים בשכבת השרת או ה-WAF, כי robots.txt ככלל לא חל עליהם. את Claude-User דווקא חוסמים ב-robots.txt עצמו, ו-Anthropic מזהירה שחסימת IP עלולה לשבש את ההחרגה הזאת.
בכל מקרה המחיר גבוה: כל בקשה כזאת היא משתמש ששאל עכשיו שאלה, והחסימה מוחקת את האתר מהתשובה שלו.
איך מוודאים שבקשת fetcher באמת הגיעה מהחברה שמפעילה אותו?▼
בקשת fetcher אפשר לאמת מול רשימות ה-IP הרשמיות של החברות: chatgpt-user.json של OpenAI, bots.json של Anthropic, ו-user-triggered-agents.json של גוגל עבור Google-Agent, לצד בדיקת reverse DNS. על Google-Agent גוגל גם מנסה את פרוטוקול web-bot-auth.