robots.txt نام فایلی است که برای پیادهسازی پروتکل حذف روباتها استفاده میشود ، استانداردی که توسط وبسایتها برای نشان دادن به خزندههای وب و سایر روباتهای وب مورد استفاده قرار میگیرد.
این استاندارد که در سال 1994 ایجاد شد، بر انطباق داوطلبانه متکی است . رباتهای مخرب میتوانند از فایل بهعنوان دایرکتوری برای بازدید از صفحات استفاده کنند، اگرچه نهادهای استاندارد از مقابله با این موضوع با امنیت از طریق مبهم بودن جلوگیری میکنند . برخی از سایت های آرشیوی robots.txt را نادیده می گیرند. این استاندارد در دهه 1990 برای کاهش اضافه بار سرور استفاده شد . در دهه 2020 بسیاری از وب سایت ها شروع به انکار ربات هایی کردند که اطلاعاتی را برای هوش مصنوعی مولد جمع آوری می کنند .
فایل "robots.txt" را می توان همراه با نقشه های سایت ، یکی دیگر از استانداردهای گنجاندن ربات برای وب سایت ها استفاده کرد.
این استاندارد توسط Martijn Koster [ 1] [2] هنگام کار برای Nexor [3] در فوریه 1994 [4] در لیست پستی www-talk ، کانال اصلی ارتباطی برای فعالیت های مرتبط با WWW در آن زمان، پیشنهاد شد . چارلز استروس ادعا می کند که کوستر را تحریک کرده است تا robots.txt را پیشنهاد کند، پس از اینکه او یک خزنده وب بد رفتاری نوشت که به طور ناخواسته باعث حمله انکار سرویس به سرور Koster شد. [5]
استاندارد، در ابتدا RobotsNotWanted.txt، به توسعه دهندگان وب اجازه می داد تا مشخص کنند که ربات ها به وب سایت خود دسترسی نداشته باشند یا ربات ها به کدام صفحات دسترسی نداشته باشند. اینترنت در سال 1994 به اندازه کافی کوچک بود که می توانست فهرست کاملی از تمام ربات ها را حفظ کند. اضافه بار سرور یک نگرانی اصلی بود. در ژوئن 1994 به یک استاندارد واقعی تبدیل شد . [6] بیشتر رعایت شد، از جمله موتورهای جستجویی مانند WebCrawler ، Lycos ، و AltaVista . [7]
در 1 ژوئیه 2019، گوگل پیشنهاد پروتکل حذف ربات ها را به عنوان یک استاندارد رسمی تحت گروه ضربت مهندسی اینترنت اعلام کرد . [8] یک استاندارد پیشنهادی [9] در سپتامبر 2022 با نام RFC 9309 منتشر شد.
هنگامی که مالک سایت می خواهد دستورالعمل هایی را به ربات های وب ارائه دهد، یک فایل متنی به نام robots.txt را در ریشه سلسله مراتب وب سایت قرار می دهد (به عنوان مثال https://www.example.com/robots.txt ). این فایل متنی حاوی دستورالعمل ها در قالب خاصی است (به مثال های زیر مراجعه کنید). روباتهایی که دستورات را دنبال میکنند، سعی میکنند این فایل را واکشی کنند و قبل از واکشی هر فایل دیگری از وبسایت، دستورالعملها را مطالعه کنند . اگر این فایل وجود نداشته باشد، رباتهای وب فرض میکنند که مالک وبسایت نمیخواهد برای خزیدن کل سایت محدودیتی قائل شود.
یک فایل robots.txt حاوی دستورالعملهایی برای رباتها است که نشان میدهد به کدام صفحات وب میتوانند و نمیتوانند دسترسی داشته باشند. فایلهای Robots.txt برای خزندههای وب از موتورهای جستجو مانند Google بسیار مهم هستند.
یک فایل robots.txt در یک وبسایت بهعنوان درخواستی عمل میکند که روباتهای مشخص شده هنگام خزیدن یک سایت، فایلها یا دایرکتوریهای مشخصشده را نادیده میگیرند. این ممکن است، برای مثال، به دلیل ترجیح دادن حریم خصوصی از نتایج موتورهای جستجو، یا این باور که محتوای فهرست های انتخابی ممکن است گمراه کننده یا بی ربط به دسته بندی سایت به عنوان یک کل باشد، یا به دلیل تمایل به برنامه فقط روی داده های خاصی کار می کند. پیوندهای صفحات فهرست شده در robots.txt همچنان می توانند در نتایج جستجو ظاهر شوند، اگر از صفحه ای که خزیده شده به آن پیوند داده شوند. [10]
یک فایل robots.txt یک مبدا را پوشش می دهد . برای وب سایت هایی با چندین زیر دامنه، هر زیر دامنه باید فایل robots.txt خود را داشته باشد. اگر example.com یک فایل robots.txt داشت اما a.example.com نداشت، قوانینی که برای example.com اعمال میشد برای a.example.com اعمال نمیشد . علاوه بر این، هر پروتکل و پورت به فایل robots.txt خود نیاز دارد. http://example.com/robots.txt برای صفحات تحت http://example.com:8080/ یا https://example.com/ اعمال نمی شود .
پروتکل robots.txt به طور گسترده توسط اپراتورهای ربات رعایت می شود. [6]
برخی از موتورهای جستجوی اصلی پیرو این استاندارد عبارتند از: Ask، [11] AOL، [12] Baidu، [13] Bing، [14] DuckDuckGo، [15] Google، [16] Yahoo!، [17] و Yandex. [18]
برخی از پروژه های آرشیو وب، robots.txt را نادیده می گیرند. تیم آرشیو از فایل برای کشف پیوندهای بیشتر، مانند نقشه سایت استفاده می کند . [19] یکی از بنیانگذاران جیسون اسکات گفت که فایل robots.txt بدون بررسی و به حال خود رها شدن، تضمین میکند که هیچ انعکاس یا مرجعی برای مواردی که ممکن است کاربرد عمومی و معنایی فراتر از زمینه وبسایت داشته باشند، وجود ندارد. [20] در سال 2017، آرشیو اینترنت اعلام کرد که پیروی از دستورالعملهای robots.txt را متوقف خواهد کرد. [21] [6] با توجه به Digital Trends ، این به دنبال استفاده گسترده از robots.txt برای حذف سایتهای تاریخی از نتایج موتورهای جستجو، و در تضاد با هدف غیرانتفاعی برای بایگانی "عکسهای فوری" از اینترنت همانطور که قبلاً وجود داشت، بود. [22]
از دهه 2020، اپراتورهای وب شروع به استفاده از robots.txt کردند تا از دسترسی به رباتهایی که دادههای آموزشی برای هوش مصنوعی تولیدی را جمعآوری میکنند، جلوگیری کنند . در سال 2023، Originality.AI دریافت که 306 وب سایت از هزار وب سایت پربازدید، GPTBot OpenAI را در فایل robots.txt خود مسدود کردند و 85 وب سایت Google -Extended را مسدود کردند. بسیاری از فایلهای robots.txt GPTBot را بهعنوان تنها رباتی که صراحتاً در همه صفحات غیرمجاز است نامگذاری میکنند. ممانعت از دسترسی به GPTBot در بین وب سایت های خبری مانند بی بی سی و نیویورک تایمز رایج بود . در سال 2023، میزبان وبلاگ Medium اعلام کرد که دسترسی به تمام خزندههای وب هوش مصنوعی را ممنوع میکند زیرا «شرکتهای هوش مصنوعی ارزشی را از نویسندگان به منظور ارسال هرزنامه به خوانندگان اینترنتی دریافت کردهاند». [6]
GPTBot با استاندارد robots.txt مطابقت دارد و به اپراتورهای وب توصیه میکند که چگونه آن را غیرمجاز کنند، اما دیوید پیرس از The Verge گفت که این تنها پس از «آموزش مدلهای اساسی که آن را بسیار قدرتمند کردهاند» آغاز شد. همچنین برخی از ربات ها هم برای موتورهای جستجو و هم برای هوش مصنوعی استفاده می شوند و ممکن است مسدود کردن تنها یکی از این گزینه ها غیرممکن باشد. [6] 404 رسانه گزارش داد که شرکتهایی مانند Anthropic و Perplexity.ai با تغییر نام یا چرخاندن اسکراپرهای جدید به جای آنهایی که در لیستهای بلاک محبوب ظاهر میشوند، robots.txt را دور زدند . [23]
علیرغم استفاده از اصطلاحات "اجازه دادن" و "عدم مجاز کردن"، این پروتکل صرفاً مشاوره ای است و بر انطباق ربات وب متکی است . نمی تواند هیچ یک از موارد ذکر شده در پرونده را اجرا کند. [24] بعید است که روبات های وب مخرب به robots.txt احترام بگذارند. برخی حتی ممکن است از robots.txt به عنوان راهنما برای یافتن پیوندهای غیرمجاز استفاده کنند و مستقیماً به آنها مراجعه کنند. در حالی که گاهی اوقات ادعا می شود که این یک خطر امنیتی است، [25] این نوع امنیت از طریق مبهم بودن توسط نهادهای استاندارد منع می شود. مؤسسه ملی استانداردها و فناوری (NIST) در ایالات متحده به طور خاص در برابر این عمل توصیه می کند: "امنیت سیستم نباید به محرمانه بودن پیاده سازی یا اجزای آن بستگی داشته باشد." [26] در زمینه فایلهای robots.txt، امنیت از طریق مبهم به عنوان یک تکنیک امنیتی توصیه نمیشود. [27]
بسیاری از رباتها هنگام واکشی محتوا، یک عامل کاربر ویژه را به سرور وب ارسال میکنند. [28] یک مدیر وب همچنین میتواند سرور را به گونهای پیکربندی کند که بهطور خودکار خرابی را بازگرداند (یا محتوای جایگزین را ارسال کند ) هنگامی که اتصالی را با استفاده از یکی از روباتها تشخیص داد. [29] [30]
برخی از سایتها، مانند Google ، humans.txt
فایلی را میزبانی میکنند که اطلاعاتی را برای خواندن انسانها نمایش میدهد. [31] برخی از سایتها مانند GitHub humans.txt را به صفحه About هدایت میکنند . [32]
پیش از این، گوگل یک فایل جوک میزبانی کرده بود که به ترمیناتور/killer-robots.txt
دستور داده بود بنیانگذاران شرکت لری پیج و سرگئی برین را نکشند . [33] [34]
این مثال به همه رباتها میگوید که میتوانند از همه فایلها بازدید کنند، زیرا علامت عام *
مخفف همه روباتها است و Disallow
دستورالعمل هیچ ارزشی ندارد، یعنی هیچ صفحهای غیرمجاز نیست.
عامل کاربر: *غیر مجاز:
عامل کاربر: *اجازه می دهد: /
همین نتیجه را می توان با یک فایل robots.txt خالی یا مفقود به دست آورد.
این مثال به همه رباتها میگوید که از یک وبسایت دور بمانند:
عامل کاربر: *غیر مجاز:/
این مثال به همه ربات ها می گوید که سه دایرکتوری را وارد نکنند:
عامل کاربر: *غیر مجاز: /cgi-bin/غیر مجاز: /tmp/غیر مجاز: /junk/
این مثال به همه ربات ها می گوید که از یک فایل خاص دوری کنند:
عامل کاربر: *غیر مجاز: /directory/file.html
تمام فایل های دیگر در دایرکتوری مشخص شده پردازش خواهند شد.
عامل کاربر: BadBot # "BadBot" را با عامل کاربر واقعی ربات جایگزین کنیدغیر مجاز:/
این مثال به دو ربات خاص می گوید که وارد یک دایرکتوری خاص نشوند:
عامل کاربر: BadBot # "BadBot" را با عامل کاربر واقعی ربات جایگزین کنیدعامل کاربر: Googlebotغیر مجاز: /private/
مثالی که نشان می دهد چگونه می توان از نظرات استفاده کرد:
# نظرات بعد از نماد "#" در ابتدای یک خط یا بعد از یک دستورالعمل ظاهر می شوندعامل کاربر: * # مطابقت با همه ربات هاغیر مجاز: / # آنها را بیرون نگه دارید
همچنین می توان چندین ربات را با قوانین خاص خود فهرست کرد. رشته ربات واقعی توسط خزنده تعریف می شود. چند اپراتور ربات، مانند Google ، از رشتههای عامل کاربر متعددی پشتیبانی میکنند که به اپراتور اجازه میدهد با استفاده از رشتههای عامل کاربر خاص، دسترسی به زیرمجموعهای از خدمات خود را رد کند. [16]
مثالی برای نمایش چندین عامل کاربر:
عامل کاربر: googlebot # همه خدمات GoogleDisallow: /private/ # Disallow this directoryعامل کاربر: googlebot-news # فقط سرویس خبریDisallow: / # غیر مجاز همه چیزعامل کاربر: * # هر رباتDisallow: /something/ # Disallow this directory
مقدار تأخیر خزیدن توسط برخی خزنده ها پشتیبانی می شود تا بازدیدهای خود از میزبان را کاهش دهند. از آنجایی که این مقدار بخشی از استاندارد نیست، تفسیر آن به خواندن آن توسط خزنده بستگی دارد. زمانی استفاده میشود که بازدیدهای متعدد از رباتها باعث کاهش سرعت میزبان شود. Yandex مقدار را به عنوان تعداد ثانیه های انتظار بین بازدیدهای بعدی تفسیر می کند. [18] بینگ تاخیر خزیدن را به اندازه یک پنجره زمانی (از 1 تا 30 ثانیه) تعریف میکند که طی آن BingBot تنها یک بار به یک وبسایت دسترسی خواهد داشت. [35] گوگل این دستورالعمل را نادیده می گیرد، [36] اما یک رابط در کنسول جستجوی خود برای وب مسترها فراهم می کند تا بازدیدهای بعدی Googlebot را کنترل کند. [37]
عامل کاربر: bingbotاجازه می دهد: /تاخیر خزیدن: 10
برخی از خزندهها از یک Sitemap
دستورالعمل پشتیبانی میکنند و به چندین نقشه سایت اجازه میدهند یکسان باشندrobots.txtبه شکل : [38]Sitemap: full-url
نقشه سایت: http://www.example.com/sitemap.xml
استاندارد حذف ربات به کاراکتر "*" در Disallow:
بیانیه اشاره نمی کند. [39]
علاوه بر فایلهای robots.txt سطح ریشه، دستورالعملهای حذف رباتها را میتوان با استفاده از متا تگهای Robots و هدرهای HTTP X-Robots-Tag در سطح گرانتری اعمال کرد. متا تگ robots را نمی توان برای فایل های غیر HTML مانند تصاویر، فایل های متنی یا اسناد PDF استفاده کرد. از سوی دیگر، X-Robots-Tag را می توان با استفاده از فایل های htaccess. و httpd.conf به فایل های غیر HTML اضافه کرد . [40]
< meta name = "ربات ها" محتوا = "noindex" />
X-Robots-Tag: noindex
X-Robots-Tag تنها پس از درخواست صفحه و پاسخ سرور، و متا تگ robots تنها پس از بارگیری صفحه مؤثر است، در حالی که robots.txt قبل از درخواست صفحه مؤثر است. بنابراین اگر یک صفحه توسط یک فایل robots.txt حذف شود، هر متا تگ روبات یا هدر X-Robots-Tag به طور موثر نادیده گرفته می شود زیرا ربات در وهله اول آنها را نمی بیند. [40]
پروتکل حذف ربات ها از خزنده ها می خواهد که حداقل 500 کیلو بایت (512000 بایت) از فایل های robots.txt را تجزیه کنند، [41] که گوگل آن را به عنوان محدودیت اندازه فایل 500 کیلوبایتی برای فایل های robots.txt حفظ می کند. [42]
ads.txt
، استانداردی برای فهرست کردن فروشندگان مجاز آگهیsecurity.txt
، فایلی برای تشریح فرآیندی که محققان امنیتی باید دنبال کنند تا آسیبپذیریهای امنیتی را گزارش کنند