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

آگاه سازی : 

**فایل robots.txt** یا استاندارد استثنا کردن ربات‌های اینترنتی (یا ربات وب) که همچنین به پروتکل استثنا کردن ربات‌ها شناخته می‌شود، معیاری برای ارتباط با خزنده‌های وب و روبات‌های وب است. این استاندارد توسط وب‌سایت‌ها استفاده می‌شود تا چگونگی آگاهی دادن به ربات های وب دربارهٔ اینکه کدام قسمت از صفحات وب نباید مورد پیمایش قرار گیرد را مشخص کند. ربات‌ها اغلب برای دسته‌بندی کردن وب‌سایت‌ها توسط موتورهای جستجو مورد استفاده قرار می‌گیرند البته همهٔ ربات‌ها از این معیارها پیروی نمی‌کنند حتی email harvesters, spambots malware و ربات‌هایی که آسیب‌پذیری‌های امنیتی را چک می‌کنند ممکن است کار خود را از قسمت‌هایی از وب‌سایت شروع کنند که به آن‌ها اجازهٔ ورود داده نشده. همچنین کسانی که تست نفوذ انجام میدهند با بررسی کردن مسیر /robots.txt در سایت ها، به قسمت های disallow میروند و دنبال باگ برای نفوذ میگردند.

## تاریخچه
این استاندارد توسط فردی به نام Martijn Koster در فوریه سال ۱۹۹۴ در حالیکه مشغول به کار برای Nexor بر روی لیست پستی www-talk بود ارائه شد که در واقع اصلی‌ترین کانال ارتباط برای فعالیت‌های WWW-related در آن زمان محسوب می‌شد. Charles Stross ادعا می‌کند که او بعد از نوشتن یک خزندهٔ وب مخرب که موجب قطع ارتباط سهوی (denial of service)برای سرورهای Koster شد باعث شد تا koster این پیشنهاد را بدهد.

این موضوع به سرعت به یک استاندارد غیررسمی تبدیل شد که انتظار می‌رفت خزنده‌های وب حال و آینده از آن پیروی کنند البته اکثر آن‌ها از جمله دسته‌ای که به کمک موتورهای جستجو کار می‌کردند مانند Lycos و AltaVista پیرو این استاندارد بودند.

## دربارهٔ استاندارد
زمانی که صاحب سایت قصد دادن دستورالعمل‌ها به یک ربات وب را دارد آن‌ها یک فایل متنی در واقع robots.txt را در ریشه یک وب‌سایت قرار می‌دهند مانندhttps://web.archive.org/web/20131003131931/http://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 خودش نیاز دارد.

; https://web.archive.org/web/20140510094021/http://www.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%7B%7Bسخ}}
Sitemap: http://www.google.com/hostednews/sitemap_index.xml%7B%7Bسخ}}`

## متا تگ‌ها
علاوه بر دستورها فایل robots.txt که در سطح سرور انجام می‌شوند، دستورهایی وجود دارند که در سطح صفحات وب‌سایت انجام می‌شوند. این دستورها از طریق متا تگ‌های ربات‌ها و تگ‌های X-Robots اجرا می‌شوند.از متا تگ‌های ربات نمی‌توان برای فایل‌های غیر HTML مانند تصاویر، فایل‌های متنی یا اسناد PDF استفاده کرد. از طرف دیگر از تگ‌های X-Robots می‌توان با استفاده از دستورها .htaccess برای فایل‌های غیر HTML استفاده کرد.

## متا تگ noindex

`<meta name="robots" content="noindex"/>`

## منابع
https://amp.fa.what-about-a.com/3724393/1/astandard-astthna-krdn-rbatha.html 

رده:بهینه‌سازی موتور جستجو