استاندارد استثناء کردن ربات‌ها

فایل robots.txt یا استاندارد استثنا کردن ربات‌ها که همچنین به پروتکل استثنا کردن ربات‌ها شناخته می‌شود، معیاری برای ارتباط با خزنده‌های وب و روبات‌های وب است. این استاندارد توسط وبسایت‌ها استفاده می‌شود تا چگونگی آگاهی دادن به web robotها درباره اینکه کدام قسمت از صفحات وب نباید مورد پیمایش قرار گیرد را مشخص کند. ربات‌ها اغلب برای دسته‌بندی کردن وبسایت‌ها توسط موتورهای جستجو مورد استفاده قرار می‌گیرند البته همه ربات‌ها از این معیارها پیروی نمی‌کنند حتی email harvesters, spambots malware و ربات‌هایی که آسیب‌پذیری‌های امنیتی را چک می‌کنند ممکن است کار خود را از قسمت‌هایی از وبسایت شروع کنند که به آن‌ها اجازه ورود داده نشده.
تاریخچه
این استاندارد توسط فردی به نام Martijn Koster در فوریه سال ۱۹۹۴ در حالیکه مشغول به کار برای Nexor بر روی لیست پستی www-talk بود ارائه شد که در واقع اصلی‌ترین کانال ارتباط برای فعالیت‌های WWW-related در آن زمان محسوب می‌شد. Charles Stross ادعا می‌کند که او بعد از نوشتن یک خزنده وب مخرب که موجب قطع ارتباط سهوی (denial of service)برای سرورهای Koster شد باعث شد تا koster این پیشنهاد را بدهد.
این موضوع به سرعت به یک استاندارد غیررسمی تبدیل شد که انتظار می‌رفت خزنده‌های وب حال و آینده از آن پیروی کنند البته اکثر آن‌ها از جمله دسته‌ای که به کمک موتورهای جستجو کار می‌کردند مانند Lycos و AltaVista پیرو این استاندارد بودند.
درباره استاندارد
زمانی که صاحب سایت قصد دادن دستورالعمل‌ها به یک web robots را دارد آن‌ها یک فایل متنی در واقع robots.txt را در ریشه یک وبسایت قرار می‌دهند مانند https://www.example.com/robots.txt این فایل نوشتاری، شامل دستورالعمل در یک قالب‌بندی خاص می‌باشد (مثال زیر را ببینید) ربات‌هایی که از این دستورالعمل‌ها پیروی می‌کنند، سعی می‌کنند که قبل از گرفتن فایل دیگری از این وبسایت، این فایل را بگیرند و دستورالعمل‌ها را بخوانند. درصورت موجود نبودن این فایل ربات‌ها بافرض اینکه صاحب سایت قصد ارائه هیچ دستورالعمل خاصی را ندارد، کل سایت را می‌خزند.
یک فایل robots.txt مانند یک درخواست عمل می‌کند که در واقع چشم پوشی از فایل‌ها یا دایرکتوری‌های خاص را هنگام خزیدن یک وبسایت برای ربات‌ها مشخص می‌کند.
لینک‌ها به صفحه‌هایی که در robots.txt لیست شده‌اند اگر به صفحه‌های دیگری که پیمایش شده‌اند لینک باشند هنوز هم می‌توانند در نتایج جستجو ظاهر شوند.
هر robots.txt فقط می‌تواند یک منبع (origin) را پوشش دهد برای یک وبسایت که دارای چندین زیر دامنه است هر زیر دامنه باید یک robots.txt داشته باشند مثلا اگر example.com یک robots.txt داشته باشد اما a.example.com نداشته باشد قوانینی که بر روی example.com اعمال می‌شود روی a.example.com اعمال نخواهد شد همچنین هر پروتکل و پورت به robots.txt خودش نیاز دارد.
http://example.com/robots.txt برای https://example.com:8080/ یا https://example.com/ کار نمی‌کند.
تعداد زیادی از موتورهای جستجو از جمله Ask, AOL, Baidu, Bing, Google, Yahoo! و Yandex از این استانداردها پیروی می‌کنند.
مثال‌ها
این دستور به همه ربات‌ها می‌گوید که می‌توانند از همه فایل‌ها بازدید کنند چون علامت * یه معنی همه ربات‌ها می‌باشد و چون دستور disallow هیچ مقداری ندارد به این معنی است که هیچ صفحه‌ای disallowed نشده.
User-agent: *
Disallow:
این نتیجه را می‌توان از یک فایل robot.txt خالی یا حتی بدون فایل robot.txt به دست آورد.
این دستور به همه ربات‌ها می‌گوید که وارد وب‌سایت نشوند:
User-agent: *
Disallow: /
این مثال به همه ربات‌ها می‌گوید که وارد سه دایرکتوری نشوند:
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /junk/
این مثال به همه ربات‌ها می‌گوید که وارد یک پوشه خاص نشوند:
User-agent: *
Disallow: /directory/file.html
توجه کنید که همه فایل‌های دیگر در این دایرکتوری، پیموده می‌شوند.
این مثال به یک ربات خاص می‌گوید که وارد وبسایت نشود:
User-agent: BadBot # replace BadBot with theactual user-agent of the bot
Disallow: /
این مثال به دو ربات خاص می‌گوید که وارد یک دایرکتوری خاص نشوند:
User-agent: BadBot # replace BadBot with theactual user-agent of the bot
User-agent: Googlebot
Disallow: /private/
این مثال نشان می‌دهد که چطور کامنت‌ها مورد استفاده قرار می‌گیرند.
# Comments appear after the "#" symbol at thestart of a line, or after a directive
User-agent: * # match all bots
Disallow: / # keep them out
همچنین می‌توان چندین ربات را همراه با قوانین خودشان لیست کرد.
تعدادی کمی از سایت‌ها مانند google از چندین user-agent پشتیبانی می‌کند که با استفاده از رشته‌های user-agent خاص به اپراتور اجازه قطع دسترسی از زیرمجموعه سرویس‌های آن‌ها را می‌دهد.
User-agent: googlebot # all Googleservices
Disallow: /private/ # disallow thisdirectory
User-agent: googlebot-news # only the newsservice
Disallow: / # disalloweverything
User-agent: * # any robot
Disallow: /something/ # disallow thisdirectory
افزونه‌های غیر استاندارد
دستور دیر خزیدن
دستور دیر خزیدن یا crawl-delay، ارزشی است که توسط برخی از ربات‌های خزنده وب پشتیبانی می‌شود. از این دستور برای محدود کردن Crawlerها استفاده می‌شود. از آنجایی که این دستور در استاندارد وب ربات‌ها تعریف نشده‌است، هر ربات می‌تواند به شکل خاصی آن را تغییر کند. برای مثال موتور جستجوی یاندکس، این دستور را به عنوان زمان تاخیر در بین مشاهده و بررسی هر وب سایت تعبیر می‌کند. موتور جستجوی بینگ نیز این دستور را به عنوان مهلت زمانی تعبیر می‌کند، مهلت زمانی که طی آن اجازه دسترسی به یک صفحه را دارد.
User-agent: *
Crawl-delay: 10
دستور اجازه
برخی از موتورهای جستجو، مانند گوگل؛ می‌توانند از یک دستور دیگر به نام اجازه یا Allow نیز پیروی کنند. این دستور زمانی کاربرد دارد که وب مستر به ربات خزنده دستور می‌دهد که یک صفحه را به‌طور کل نادیده بگیرد، اما بخشی از آن را ایندکس و در نتایج جستجو ثبت کند. به این ترتیب، ربات خزنده تنها قسمتی از یک صفحه مانند برخی از کدهای HTML یا تصاویر سایت را در موتور جستجو ثبت می‌کند، بدون اینکه صفحه مورد نظر ایندکس شود.
Allow: /directory1/myfile.html
Disallow: /directory1/
در مثال بالا تمام محتویات دایرکتوری directory1/ نادیده گرفته می‌شود، به جز /directory1/myfile.html
دستور نقشه سایت
برخی از موتورهای جستجو از دستور نقشه سایت پیروی می‌کنند. این دستور اجازه می‌دهد چند نقشه سایت را در یک فایل robots.txt مدیریت کرد.
Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml
Sitemap: http://www.google.com/hostednews/sitemap_index.xml
متا تگ‌ها
علاوه بر دستورها فایل robots.txt که در سطح سرور انجام می‌شوند، دستوراتی وجود دارند که در سطح صفحات وب سایت انجام می‌شوند. این دستورها از طریق متا تگ‌های ربات‌ها و تگ‌های X-Robots اجرا می‌شوند. از متا تگ‌های ربات نمی‌توان برای فایل‌های غیر HTML مانند تصاویر، فایل‌های متنی یا اسناد PDF استفاده کرد. از طرف دیگر از تگ‌های X-Robots می‌توان با استفاده از دستورها .htaccess برای فایل‌های غیر HTML استفاده کرد.
متا تگ noindex