ProxynetProxynet

فایل robots.txt چیست و چگونه آن را بخوانیم؟

تاریخ انتشار:

15 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
کارت سندی با سطرهای User-agent، Disallow و Allow که به مکعب ربات وصل است

اگر به انتهای آدرس هر سایتی /robots.txt بیفزایید و باز کنید، معمولاً فایل متنی ساده‌ای با چند سطر می‌بینید. سایت در این فایل به موتورهای جست‌وجو، خزنده‌ها و اسکرپرها می‌گوید «این مسیرها را نخزید». برای کارشناس سئو، تنظیمی است که بر نمایش سایت در موتورهای جست‌وجو اثر دارد؛ برای توسعه‌دهنده‌ای که داده جمع می‌کند، نخستین سندی است که باید پیش از آغاز خواند.

در این نوشته توضیح می‌دهیم robots.txt چیست، کجا قرار دارد و قواعد آن چگونه خوانده می‌شوند؛ همراه User-agent، Disallow، Allow، نویسه‌های جانشین و قاعده طولانی‌ترین تطبیق. سپس سطرهای Crawl-delay و Sitemap، الزام‌آور بودن یا نبودن قانونی فایل، شیوه خواندن robots.txt با پایتون توسط اسکرپر (و زمانی که تحلیلگر کتابخانه استاندارد پاسخ نادرست می‌دهد)، اشتباهات رایج سئو و سطرهای نوشته‌شده برای ربات‌های هوش مصنوعی را بررسی می‌کنیم.

robots.txt چیست؟

robots.txt فایل پروتکل Robots Exclusion Protocol است که از 1994 به کار می‌رود و سال‌ها بدون استاندارد نوشته‌شده گسترش یافت. این پروتکل در 2022 با ⁦RFC 9309⁩ استاندارد رسمی شد. استاندارد قالب فایل، شیوه تطبیق قواعد و کار لازم هنگام در دسترس نبودن فایل را تعریف می‌کند.

کار فایل ساده است: صاحب سایت اعلام می‌کند بازدیدکنندگان خودکار باید از کدام مسیرها دور بمانند. دلیل‌های رایج:

  • بار سرور: مسیرهایی مانند صفحه‌های جست‌وجو و فیلتر که در هر درخواست به پایگاه داده فشار می‌آورند.
  • محتوای کم‌ارزش یا تکراری: هزاران صفحه یکسان که پارامترهای مرتب‌سازی می‌سازند، صفحه‌های سبد خرید و حساب.
  • بودجه خزش: هدایت زمان ربات‌های موتور جست‌وجو به سوی صفحه‌های مهم.
  • ترجیح استفاده از محتوا: دور نگه‌داشتن برخی ربات‌ها، مانند ربات‌هایی که برای آموزش هوش مصنوعی داده جمع می‌کنند، از خزیدن سایت.

robots.txt سازوکار امنیتی نیست. فایل عمومی است و بستن یک مسیر با Disallow وجود آن مسیر را هم اعلام می‌کند. صفحه‌هایی که باید خصوصی بمانند با رمز، کنترل دسترسی یا روش‌هایی مانند noindex محافظت می‌شوند.

robots.txt کجا قرار دارد؟

فایل همیشه در شاخه ریشه سایت است و نامش با حروف کوچک robots.txt است:

  • https://example.com/robots.txt معتبر است.
  • https://example.com/folder/robots.txt را هیچ رباتی نمی‌خواند.

قواعد برای هر پروتکل، میزبان و پورت جداگانه اعمال می‌شوند. فایل https://example.com/robots.txt فقط برای https://example.com معتبر است؛ زیردامنه https://shop.example.com فایل خودش را لازم دارد. نسخه‌های http:// و https:// هم از نظر فنی فایل‌های جداگانه‌اند.

⁦RFC 9309⁩ تعریف می‌کند وقتی فایل در دسترس نیست چه اتفاقی می‌افتد:

  • پاسخ 4xx (فایل وجود ندارد): خزنده می‌تواند فرض کند سایت محدودیتی ندارد.
  • پاسخ 5xx یا خطای شبکه (فایل در دسترس نیست): خزنده باید فرض کند کل سایت بسته است.

استاندارد همچنین می‌گوید خزنده‌ها می‌توانند فایل را در کش نگه دارند اما معمولاً نباید نسخه کش‌شده را بیش از 24 ساعت به کار ببرند. پس تغییری که در فایل می‌دهید ممکن است تا یک روز طول بکشد تا به ربات‌ها برسد.

قواعد چگونه خوانده می‌شوند؟

در زیر فایل نمونه‌ای واقعی برای یک فروشگاه اینترنتی آمده است:

text
User-agent: *
Disallow: /cart
Disallow: /account/
Disallow: /search
Allow: /search/popular
Disallow: /*?sort=
Disallow: /*.pdf$
Crawl-delay: 5

User-agent: ExamplePriceBot
Disallow: /account/
Allow: /

User-agent: GPTBot
Disallow: /

Sitemap: https://example.com/sitemap.xml
سطرمعنا
User-agent: *قواعد این گروه برای هر رباتی که گروه ویژه ندارد اعمال می‌شود
Disallow: /cartهر مسیری که با /cart آغاز شود: /cart، /cart/add و حتی /cartoon
Disallow: /account/پوشه /account/ و هر چه زیر آن است؛ /account بدون اسلش پایانی تطبیق ندارد
Disallow: /search/search، /search?q=phone، /search/popular
Allow: /search/popularاستثنایی بر ممنوعیت قبلی؛ چون طولانی‌تر است، این مسیر قابل خزش است
Disallow: /*?sort=* هر دنباله‌ای از نویسه‌هاست: هر آدرسی که پارامتر ?sort= دارد
Disallow: /*.pdf$$ پایان آدرس را نشان می‌دهد: آدرس‌هایی که با .pdf پایان می‌یابند؛ /catalog.pdf?v=2 تطبیق ندارد
Crawl-delay: 5درخواست صبر 5 ثانیه میان درخواست‌ها (غیراستاندارد، پایین توضیح داده شده)
User-agent: ExamplePriceBotگروهی فقط برای این ربات؛ این ربات گروه * بالا را اصلاً نمی‌خواند
Allow: /برای این ربات همه‌چیز جز صفحه‌های حساب باز است
User-agent: GPTBot همراه Disallow: /GPTBot نباید هیچ بخشی از سایت را بخزد
Sitemap:آدرس نقشه سایت؛ مستقل از گروه‌ها

گروه‌های User-agent

فایل از گروه‌ها تشکیل شده است. هر گروه با یک یا چند سطر User-agent آغاز می‌شود و قواعدی که پس از آن می‌آیند به همان گروه تعلق دارند. وقتی رباتی فایل را می‌خواند:

  1. به دنبال گروهی می‌گردد که با نام خودش تطبیق داشته باشد. تطبیق با نشانه محصول ربات (مثلاً GPTBot) و بدون حساسیت به حروف بزرگ و کوچک انجام می‌شود، نه با رشته کامل User-Agent مرورگر.
  2. اگر گروه ویژه خود را بیابد، فقط قواعد همان گروه را اعمال می‌کند. قواعد گروه * برای آن ربات افزوده نمی‌شوند.
  3. اگر گروه ویژه نباشد، گروه * را اعمال می‌کند.
  4. اگر هیچ گروهی نباشد، فرض می‌کند سایت محدودیتی ندارد.

بند 2 اغلب نادیده گرفته می‌شود. در نمونه بالا، چون ExamplePriceBot گروه ویژه دارد، نه ممنوعیت‌های /cart و /search و نه درخواست Crawl-delay بر این ربات اثر دارند.

Disallow، Allow و قاعده طولانی‌ترین تطبیق

قواعد به‌صورت پیشوند مسیر تطبیق می‌یابند: Disallow: /cart هر مسیری را که با /cart آغاز شود دربرمی‌گیرد. وقتی چند قاعده با یک آدرس تطبیق داشته باشند، بر اساس ⁦RFC 9309⁩ طولانی‌ترین قاعده منطبق برنده است. آدرس /search/popular هم با Disallow: /search (7 نویسه) و هم با Allow: /search/popular (15 نویسه) تطبیق دارد؛ Allow طولانی‌تر برنده است و صفحه قابل خزش است.

اگر دو قاعده هم‌طول باشند و یکی Allow و دیگری Disallow، استاندارد پیشنهاد می‌کند Allow ترجیح داده شود. ترتیب قواعد در فایل نتیجه را تغییر نمی‌دهد. همان‌طور که پایین‌تر خواهیم دید، برخی تحلیلگرها این نکته را درست اجرا نمی‌کنند.

نویسه‌های جانشین

  • * با صفر یا چند نویسه تطبیق دارد: Disallow: /*?session= هر آدرسی را که پارامتر نشست دارد می‌بندد.
  • $ پایان آدرس را نشان می‌دهد: Disallow: /*.pdf$ فقط آدرس‌هایی را که با .pdf پایان می‌یابند می‌بندد.

اگر مقدار سطر Disallow: خالی بماند (Disallow:)، هیچ مسیری بسته نمی‌شود. Disallow: / کل سایت را می‌بندد. تفاوت یک نویسه‌ای میان این دو سطر می‌تواند یکی از پرهزینه‌ترین اشتباهات سئو را بسازد.

سطرهای Crawl-delay و Sitemap

Crawl-delay درخواستی است که به ربات می‌گوید میان درخواست‌های پیاپی به یک سایت چند ثانیه صبر کند. بخشی از ⁦RFC 9309⁩ نیست، اما بسیاری از خزنده‌ها و اسکرپرها آن را می‌خوانند. گوگل از سطر Crawl-delay پشتیبانی نمی‌کند؛ سرعت خزش گوگل را سامانه‌های خودش تعیین می‌کنند. برخی موتورهای جست‌وجوی دیگر این سطر را در نظر می‌گیرند.

برای اسکرپر، مقدار Crawl-delay ترجیح سرعتی است که صاحب سایت صراحتاً اعلام کرده و با وجود غیراستاندارد بودن، نشانه‌ای ارزشمند برای پیروی است. راه‌های دیگر احترام به محدودیت نرخ در وب اسکرپینگ بدون مسدود شدن آمده است.

سطر Sitemap آدرس کامل فایل نقشه سایت را می‌دهد. مستقل از گروه‌هاست، در هر جای فایل می‌تواند بیاید و بیش از یک بار نوشته شود. هم برای موتورهای جست‌وجو و هم برای اسکرپرها، راه رسیدن مستقیم به فهرست صفحه‌ها به‌جای خزیدن پیوندبه‌پیوند کل سایت است.

آیا robots.txt از نظر قانونی الزام‌آور است؟

از نظر فنی robots.txt درخواست است، نه مانع دسترسی. بسته بودن یک مسیر در فایل از دسترسی به آن به‌طور فیزیکی جلوگیری نمی‌کند. پس پاسخ به «آیا باید از robots.txt پیروی کنم» بیشتر قانونی و اخلاقی است تا فنی.

آنچه در عمل باید بدانید:

  • هر خزنده مشروعی از آن پیروی می‌کند. موتورهای جست‌وجو، سرویس‌های بایگانی و خزنده‌های سازمانی robots.txt را می‌خوانند و اعمال می‌کنند.
  • همراه شرایط سایت ارزیابی می‌شود. شرایط استفاده بسیاری از سایت‌ها دسترسی خودکار را با ارجاع به robots.txt تنظیم می‌کند. برای نمونه، شرایط خدمات گوگل دسترسی خودکاری را که دستورهای ماشین‌خوان مانند robots.txt را نقض کند در شمار نمونه‌های سوءاستفاده می‌آورد.
  • در اختلاف‌ها می‌تواند نشانه تعیین‌کننده‌ای باشد. اسکرپری که مسیرهای صراحتاً بسته‌شده سایت را بخزد، کسی دیده می‌شود که آگاهانه ترجیح سایت را نادیده گرفته است.
  • پیروی از robots.txt همه‌چیز را قانونی نمی‌کند. جمع‌آوری داده شخصی از مسیری باز، شما را از تعهدهای قانون‌هایی مانند GDPR معاف نمی‌کند.

چارچوب قانونی جمع‌آوری داده را در آیا وب اسکرپینگ قانونی است؟ بررسی کرده‌ایم. این نوشته مشاوره حقوقی نیست؛ برای وضعیت خودتان پیشنهاد می‌کنیم با وکیل مشورت کنید.

اسکرپر چگونه باید robots.txt را بخواند؟

کتابخانه استاندارد پایتون ماژول urllib.robotparser را دارد و مستندات رسمی آن کاربرد پایه را شرح می‌دهد. اما وقتی ماژول را با فایل نمونه بالا آزمودیم، در چهار جا از ⁦RFC 9309⁩ فاصله گرفت:

حالت⁦RFC 9309⁩urllib.robotparser
نخست Disallow: /search و سپس Allow: /search/popular/search/popular قابل خزش است (طولانی‌ترین قاعده)قابل خزش نیست؛ نخستین قاعده منطبق را اعمال می‌کند
همان دو قاعده با ترتیب وارونهقابل خزش استقابل خزش است
Disallow: /*?sort=/category?sort=price بسته استباز است؛ * پشتیبانی نمی‌شود
Disallow: /*.pdf$/catalog.pdf بسته استباز است؛ $ پشتیبانی نمی‌شود

دو تفاوت رفتاری هم هست:

  • وقتی رشته کامل User-Agent به‌عنوان نام ربات داده شود (Mozilla/5.0 (compatible; GPTBot/1.2; ...))، ماژول گروه ویژه ربات را نیافت و گروه * را اعمال کرد. باید فقط نشانه محصول (GPTBot) را به تابع بدهید.
  • وقتی فایل با 401 یا 403 پاسخ دهد، ماژول کل سایت را بسته می‌داند. ⁦RFC 9309⁩ پاسخ‌های 4xx را «فایل وجود ندارد» می‌داند. چون تابع read() ماژول فایل را با User-Agent پیش‌فرض پایتون و بدون timeout دانلود می‌کند، در سایتی که این مقدار را مسدود می‌کند ممکن است به اشتباه نتیجه «همه‌چیز بسته» بگیرید.

به همین دلیل امن‌تر است فایل را با کلاینت خودتان دانلود کنید، به parse() بدهید و برای فایل‌هایی که نویسه جانشین دارند تحلیلگر کامل‌تری به کار ببرید:

python
from urllib.parse import urlsplit
from urllib.robotparser import RobotFileParser

import requests

BOT_NAME = "ExamplePriceBot"
USER_AGENT = f"{BOT_NAME}/1.0 (+https://example.com/about-our-bot)"


def robots_for(site, session):
    """Downloads robots.txt and applies the 4xx and 5xx behaviour from RFC 9309."""
    parser = RobotFileParser()
    try:
        response = session.get(f"{site}/robots.txt", timeout=10)
    except requests.RequestException:
        parser.parse(["User-agent: *", "Disallow: /"])  # unreachable: everything closed
        return parser
    if response.status_code >= 500:
        parser.parse(["User-agent: *", "Disallow: /"])
    elif response.status_code >= 400:
        parser.parse([])  # no file: no restrictions
    else:
        parser.parse(response.text.splitlines())
    return parser


session = requests.Session()
session.headers["User-Agent"] = USER_AGENT

url = "https://example.com/product/123"
site = "{0.scheme}://{0.netloc}".format(urlsplit(url))
robots = robots_for(site, session)

if robots.can_fetch(BOT_NAME, url):
    delay = robots.crawl_delay(BOT_NAME) or 2
    print(f"Crawlable, will wait {delay} s between requests")
else:
    print("robots.txt closes this address, skipping")

print("Sitemaps:", robots.site_maps())

دو نکته در نمونه مهم است: به can_fetch فقط نام ربات داده می‌شود نه رشته کامل User-Agent؛ و فایل برای هر سایت یک بار دانلود و در حافظه نگه داشته می‌شود، نه برای هر صفحه دوباره.

اگر نویسه‌های جانشین و قاعده طولانی‌ترین تطبیق برای شما مهم است، کتابخانه protego که Scrapy به کار می‌برد این قواعد را نزدیک‌تر به RFC اجرا می‌کند. هر تحلیلگری به کار ببرید، نتیجه‌ها را با بررسی دستی چند آدرس در برابر فایل سایت مقصد تأیید کنید.

اشتباهات رایج سئو

چون robots.txt مستقیم بر دیده شدن در جست‌وجو اثر دارد، در سمت سئو هم زیاد نادرست پیکربندی می‌شود:

  • فراموش کردن سطر Disallow: / هنگام انتشار. سطری که سایت را در محیط آزمایشی می‌بست به سایت زنده منتقل می‌شود و سایت از نتایج جست‌وجو ناپدید می‌شود.
  • تلاش برای حذف صفحه از فهرست با robots.txt. Disallow جلوی خزیده شدن صفحه را می‌گیرد، نه فهرست شدن آن را. صفحه بسته‌ای که از سایت‌های دیگر پیوند می‌گیرد ممکن است بدون خوانده شدن محتوایش فقط با آدرسش در نتایج دیده شود. برای حذف از فهرست، صفحه باید قابل خزش باشد و noindex داشته باشد.
  • بستن فایل‌های CSS و جاوااسکریپت. موتور جست‌وجو نمی‌تواند صفحه را درست نمایش دهد و ارزیابی سازگاری با موبایل و محتوا آسیب می‌بیند.
  • درهم کردن اسلش‌های پایانی. Disallow: /blog هم پوشه /blog/ و هم صفحه‌ای مانند /blogger-guide را می‌بندد.
  • نادیده گرفتن حروف بزرگ و کوچک. تطبیق مسیر به حروف حساس است: Disallow: /Search مسیر /search را نمی‌بندد.
  • نگذاشتن فایل در زیردامنه. shop.example.com فایل robots.txt خودش را لازم دارد.
  • انتظار اعمال فوری تغییرها. ربات‌ها فایل را از کش می‌خوانند؛ تغییر ممکن است تا یک روز طول بکشد تا اثر کند.

مستندات Google Search Central شیوه تفسیر robots.txt توسط گوگل، از جمله سقف اندازه فایل و رفتار در برابر کدهای خطا را مفصل توضیح می‌دهد. برای بررسی نتایج جست‌وجو در کشورهای مختلف، صفحه راه‌حل پروکسی سئو را ببینید.

سطرهای ویژه ربات‌های هوش مصنوعی

در سال‌های اخیر بیشترین سطرهایی که به فایل‌های robots.txt افزوده شده، خزنده‌های شرکت‌های هوش مصنوعی را هدف گرفته‌اند. برخی از این ربات‌ها برای آموزش مدل داده جمع می‌کنند و برخی در پاسخ به پرسش کاربر صفحه را همان لحظه می‌گیرند. نشانه‌های محصول رایج:

  • GPTBot (OpenAI)
  • ClaudeBot (Anthropic)
  • CCBot (Common Crawl)
  • Google-Extended: خزنده جداگانه نیست، بلکه نشانه‌ای است که تعیین می‌کند محتوای جمع‌شده توسط ربات‌های موجود گوگل در مدل‌های Gemini به کار رود یا نه؛ بر دیده شدن در جست‌وجوی گوگل اثری ندارد.

برای نمونه، سایتی که می‌خواهد خزش برای آموزش را ببندد و برای موتورهای جست‌وجو باز بماند می‌تواند این سطرها را بیفزاید:

text
User-agent: GPTBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Google-Extended
Disallow: /

شرکت‌ها گاه‌به‌گاه نام ربات تازه‌ای می‌افزایند یا نقش ربات‌های موجود را جدا می‌کنند. هنگام نوشتن این سطرها یا تنظیم اسکرپر بر پایه آن‌ها، مستندات به‌روز شرکت مربوط را بررسی کنید. برای نمونه‌ای از تدابیری که سایت‌ها در لایه‌های دیگر در برابر ربات‌هایی که از robots.txt پیروی نمی‌کنند می‌گیرند، Cloudflare Precursor را ببینید. برای نمونه‌ای از اینکه مدل‌های هوش مصنوعی داده وب را چگونه به کار می‌برند، وب اسکرپینگ با ⁦GPT-6 Astra⁩ را ببینید.

اگر عامل هوش مصنوعی یا اسکرپر خودتان را می‌سازید، به آن نشانه محصول مشخصی بدهید و robots.txt را با همان نام بخوانید. آنگاه صاحب سایت می‌تواند گروهی فقط برای شما بنویسد و ترجیح‌های خزش خود را مستقیم به شما برساند.

کاربردها

  • خزنده در مقیاس بزرگ: robots.txt را برای هر دامنه یک بار دانلود می‌کند، در کش نگه می‌دارد و هر آدرس را پیش از افزودن به صف بررسی می‌کند. بخش مقیاس‌پذیری در صفحه راه‌حل وب کراولر آمده است.
  • اسکریپت پایش قیمت: آدرس‌های محصول را از نقشه سایت برمی‌دارد، هرگز به صفحه‌های جست‌وجو و فیلتر بسته‌شده با robots.txt نمی‌رود و به Crawl-delay احترام می‌گذارد. ساختار کلی در صفحه راه‌حل استخراج داده آمده است.
  • ممیزی سئو: پیش از انتشار بررسی می‌کند robots.txt صفحه‌های مهم را نبسته باشد و سطر نقشه سایت درست باشد.
  • تعیین سیاست برای ربات‌های هوش مصنوعی: صاحب محتوا تصمیم می‌گیرد کدام ربات‌ها با چه هدفی می‌توانند سایت را بخزند و سطرهای مربوط را می‌افزاید.

برخی سایت‌ها پیوندهای پنهانی هم می‌گذارند تا ربات‌ها را به مسیرهای بسته robots.txt بکشانند؛ خزنده‌ای که از robots.txt پیروی کند به‌طور طبیعی از این تله‌ها دور می‌ماند. سازوکار آن را در تله‌های هانی‌پات توضیح داده‌ایم.

اشتباهات رایج (سمت اسکرپر)

  • هرگز نخواندن robots.txt. آغاز خزش بدون دانستن ترجیحی که سایت صراحتاً اعلام کرده است.
  • اعتماد چشم‌بسته به urllib.robotparser. در ترتیب قواعد و نویسه‌های جانشین ممکن است نتیجه نادرست بدهد.
  • دادن رشته کامل User-Agent به can_fetch. گروه ویژه ربات پیدا نمی‌شود.
  • فرض ادغام گروه ویژه ربات با گروه *. اگر گروه ویژه باشد، فقط همان اعمال می‌شود.
  • دانلود دوباره فایل در هر درخواست. بی‌دلیل به سایت بار می‌افزاید؛ برای هر سایت یک بار دانلود و در کش نگه دارید.
  • ادامه خزش با پاسخ 5xx. استاندارد می‌گوید وقتی فایل در دسترس نیست، کل سایت باید بسته دانسته شود.
  • نادیده گرفتن Crawl-delay چون استاندارد نیست. درخواست سرعت آشکار صاحب سایت است.

راهنمای انتخاب

وضعیت شماپیشنهاد
آدرس با Disallow بسته شدهنخزید
آدرس باز است و Crawl-delay وجود داردمیان درخواست‌ها دست‌کم همان مدت صبر کنید
robots.txt پاسخ 404 می‌دهدبدون محدودیت بدانید، اما شرایط سایت را هم بررسی کنید
robots.txt پاسخ 5xx می‌دهد یا در دسترس نیستسایت را بسته بدانید و بعداً دوباره تلاش کنید
فایل نویسه‌های جانشین * یا $ داردتحلیلگر سازگار با RFC به کار ببرید
گروهی برای ربات شما وجود داردفقط همان گروه را اعمال کنید
سطر نقشه سایت وجود داردآدرس‌ها را از نقشه سایت بردارید
می‌خواهید صفحه‌ای را از جست‌وجو حذف کنیدنه robots.txt، بلکه noindex

پرسش‌های متداول

آیا خزیدن سایتی که robots.txt ندارد مجاز است؟

اگر robots.txt وجود نداشته باشد، سایت بدون محدودیت خزش دانسته می‌شود. این به معنای بی‌اثر بودن شرایط استفاده سایت، محدودیت‌های نرخ و قانون‌های داده شخصی نیست.

تفاوت Disallow و noindex چیست؟

Disallow جلوی خزیدن صفحه توسط ربات، یعنی دانلود محتوای آن، را می‌گیرد. noindex درخواست می‌کند صفحه در نتایج جست‌وجو نمایش داده نشود و لازم دارد ربات بتواند صفحه را بخواند. اگر صفحه‌ای را هم با Disallow ببندید و هم noindex بگذارید، ربات هرگز برچسب noindex را نمی‌بیند.

آیا گوگل سطر Crawl-delay را می‌خواند؟

نه. گوگل از این سطر پشتیبانی نمی‌کند و سرعت خزش را با سامانه‌های خودش تعیین می‌کند. اما برخی موتورهای جست‌وجوی دیگر و بسیاری از خزنده‌ها آن را در نظر می‌گیرند.

فایل robots.txt چه اندازه‌ای می‌تواند داشته باشد؟

⁦RFC 9309⁩ از خزنده‌ها می‌خواهد دست‌کم فایلی به اندازه 500 کیبی‌بایت را پردازش کنند؛ قواعد پس از این سقف ممکن است نادیده گرفته شوند. در عمل فایل‌های robots.txt بسیار کوچک‌ترند و کوتاه نگه‌داشتن آن‌ها خطر اشتباه را کم می‌کند.

آیا می‌توانم ربات‌های هوش مصنوعی را با robots.txt مسدود کنم؟

برای ربات‌هایی که از robots.txt پیروی می‌کنند بله: گروهی با نشانه محصول مربوط باز کنید و Disallow: / بنویسید. برای ربات‌هایی که پیروی نمی‌کنند، به تدابیر افزوده در سمت سرور یا CDN نیاز دارید.

اسکرپر من چه نام User-agent به کار ببرد؟

مقداری با نشانه محصول کوتاهی که ربات شما را معرفی کند و آدرس تماس: ExamplePriceBot/1.0 (+https://example.com/about-our-bot). هنگام بررسی robots.txt فقط بخش ExamplePriceBot را به کار ببرید.

خلاصه

robots.txt فایلی در شاخه ریشه سایت است که به ربات‌ها می‌گوید کدام مسیرها را نخزند. قواعد در گروه‌های User-agent دسته‌بندی می‌شوند؛ اگر رباتی گروه ویژه داشته باشد فقط همان اعمال می‌شود، هنگام تعارض طولانی‌ترین تطبیق برنده است و * و $ نویسه‌های جانشین‌اند. Crawl-delay استاندارد نیست و گوگل از آن پشتیبانی نمی‌کند، اما برای اسکرپرها درخواست سرعت آشکاری است. ماژول urllib.robotparser پایتون در ترتیب قواعد و نویسه‌های جانشین از RFC فاصله دارد؛ فایل را با کلاینت خودتان دانلود کنید و نتیجه‌ها را تأیید کنید. برای کارهای جمع‌آوری داده در چارچوب قواعد، نگاهی به خدمات پروکسی ما بیندازید.

پرسش از ChatGPTپرسش از Claude