اگر به انتهای آدرس هر سایتی /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 ساعت به کار ببرند. پس تغییری که در فایل میدهید ممکن است تا یک روز طول بکشد تا به رباتها برسد.
قواعد چگونه خوانده میشوند؟
در زیر فایل نمونهای واقعی برای یک فروشگاه اینترنتی آمده است:
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 آغاز میشود و قواعدی که پس از آن میآیند به همان گروه تعلق دارند. وقتی رباتی فایل را میخواند:
- به دنبال گروهی میگردد که با نام خودش تطبیق داشته باشد. تطبیق با نشانه محصول ربات (مثلاً
GPTBot) و بدون حساسیت به حروف بزرگ و کوچک انجام میشود، نه با رشته کامل User-Agent مرورگر. - اگر گروه ویژه خود را بیابد، فقط قواعد همان گروه را اعمال میکند. قواعد گروه
*برای آن ربات افزوده نمیشوند. - اگر گروه ویژه نباشد، گروه
*را اعمال میکند. - اگر هیچ گروهی نباشد، فرض میکند سایت محدودیتی ندارد.
بند 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() بدهید و برای فایلهایی که نویسه جانشین دارند تحلیلگر کاملتری به کار ببرید:
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 به کار رود یا نه؛ بر دیده شدن در جستوجوی گوگل اثری ندارد.
برای نمونه، سایتی که میخواهد خزش برای آموزش را ببندد و برای موتورهای جستوجو باز بماند میتواند این سطرها را بیفزاید:
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 فاصله دارد؛ فایل را با کلاینت خودتان دانلود کنید و نتیجهها را تأیید کنید. برای کارهای جمعآوری داده در چارچوب قواعد، نگاهی به خدمات پروکسی ما بیندازید.




