ربات های خزنده AI محدود کننده سرعت با ModSecurity

رباتهای آموزشی هوش مصنوعی از OpenAI، Anthropic، Amazon و دهها شرکت دیگر اکنون با همان تهاجم حمله DDoS به سرورهای وب تولیدی ضربه میزنند و robots.txt آنها را متوقف نمیکند. این راهنما به نحوه استفاده تیم سیستم های InMotion از ModSecurity برای اعمال محدودیت نرخ بر روی هر ربات در سطح سرور بدون وقفه می پردازد.
مشکل: ربات های هوش مصنوعی که از قوانین پیروی نمی کنند
robots.txt چندین دهه است که قرارداد عملی بین وب سایت ها و خزنده های وب بوده است. دستورالعملی مانند Crawl-Delay: 10 به ربات های سازگار می گوید که 10 ثانیه بین درخواست ها صبر کنند. Google راهی برای پیکربندی سرعت خزیدن از طریق Google Search Console به شما ارائه می دهد. رباتهای جستجوی سنتی به اندازه کافی در این محدوده کار کردهاند که اکثر sysadminها هرگز به آنها فکر نکردهاند.
برنامه های آموزشی LLM داستان متفاوتی است.
از سال 2024، تیمهای مدیریت سیستم InMotion شروع به مشاهده الگوی ترافیک سنگین غیرمعمول در زیرساختهای مشترک و اختصاصی کردند. منبع یک ربات ترولینگ نبود. این رباتها چندین ربات بودند که هر کدام توسط یک شرکت هوش مصنوعی متفاوت اجرا میشدند، سرورهای یکسانی را در همان زمان بدون تأخیر بین درخواستها و بدون رعایت دستورالعملهای تاخیر خزیدن میخزند. هیچ کدام با هم هماهنگ نیستند. هیچکدام نیازی نداشتند. بار ترکیبی GPTBot، ClaudeBot، Amazonbot و همتایان آنها که همزمان با سرور یکسان برخورد میکنند، منجر به فرسودگی منابع میشود که از نظر عملکردی مشابه یک حمله انکار سرویس توزیعشده سهوی است.
این موضوع بسیاری از صاحبان وب سایت هاست را شگفت زده می کند robots.txt الزام آور است. این نیست. این یک قرارداد است و این ربات ها از آن پیروی نمی کنند.
دو گزینه، یک مصالحه واضح
ابزار blunt یک بلوک کامل از طریق .htaccess است. شما می توانید از طریق User-Agent دسترسی را رد کنید و ربات ها به طور کامل به سرور شما برخورد نمی کنند. مشکل حل شد، با این تفاوت که اینطور نیست: سایت شما نیز از سیستمهای کشف مبتنی بر هوش مصنوعی ناپدید میشود. برای کسبوکارهایی که میخواهند در پاسخهای تولید شده با هوش مصنوعی یا ویژگیهای جستجوی مبتنی بر LLM ظاهر شوند، مسدود کردن رباتهای یادگیری کاملاً هزینههای بلندمدت واقعی دارد.
محدودیت سرعت بهترین راه است. شما سرعت روبات ها را به سرعتی که سرور شما می تواند انجام دهد کاهش می دهید. آنها همچنان محتوای شما را ایندکس می کنند. شما هنوز دید را حفظ می کنید. و هنگامی که یک ربات از رعایت محدودیت سرعتی که شما تعیین کرده اید خودداری می کند، شما آن درخواست خاص را مسدود می کنید، نه ربات را برای همیشه.
چگونه ModSecurity Rate Limiting کار می کند
ModSecurity یک فایروال برنامه وب منبع باز است که بر روی Apache یا Nginx اجرا می شود و ترافیک HTTP را در زمان واقعی بررسی می کند. این همان ابزاری است که تلاشهای تزریق SQL و حملات اسکریپت نویسی بین سایتی را روی سرورهای دارای امنیت مناسب مسدود میکند. چیزی که آن را در اینجا مفید میکند، توانایی آن برای ردیابی تعداد درخواستهای کاربر-عامل و رد درخواستهایی است که از یک آستانه خاص فراتر میروند.
این رویکرد در دو مرحله کار می کند:
- درخواست ورودی را توسط یک رشته User-Agent شناسایی کنید و یک شمارنده برای هر میزبان افزایش دهید.
- اگر این شمارنده قبل از انقضا از حد مجاز فراتر رفت، با یک پاسخ 429 درخواست خیلی زیاد، درخواست را رد کنید و یک هدر Retry-After تنظیم کنید.
این هدر Retry-After معنی دارد. به صراحت به ربات می گوید که چه مدت باید قبل از درخواست بعدی خود صبر کند. خزش خوب به آن احترام می گذارد. یکی که در تلاش بعدی خراب نمی شود.
قوانین ModSecurity
در زیر خطمشیهای محدودکننده نرخی که تیم سیستم میزبانی InMotion ایجاد کرده و در حال حاضر اجرا میکند، آمده است. هر مجموعه قانون یک ربات User-Agent خاص را هدف قرار می دهد و حداکثر یک درخواست در هر 3 ثانیه برای نام میزبان اعمال می کند.
GPTBot (OpenAI)
# Limit GPTBot hits by user agent to one hit per 3 secondsSecRule REQUEST_HEADERS:User-Agent "@pm GPTBot" \ "id:13075,phase:2,nolog,pass,setuid:%{request_headers.host},\ setvar:user.ratelimit_gptbot=+1,expirevar:user.ratelimit_gptbot=3"SecRule USER:RATELIMIT_GPTBOT "@gt 1" \ "chain,id:13076,phase:2,deny,status:429,setenv:RATELIMITED_GPTBOT,\ log,msg:'RATELIMITED GPTBOT'" SecRule REQUEST_HEADERS:User-Agent "@pm GPTBot"Header always set Retry-After "3" env=RATELIMITED_GPTBOTErrorDocument 429 "Too Many Requests"
ClaudeBot (انتروپیک)
# Limit ClaudeBot hits by user agent to one hit per 3 secondsSecRule REQUEST_HEADERS:User-Agent "@pm ClaudeBot" \ "id:13077,phase:2,nolog,pass,setuid:%{request_headers.host},\ setvar:user.ratelimit_claudebot=+1,expirevar:user.ratelimit_claudebot=3"SecRule USER:RATELIMIT_CLAUDEBOT "@gt 1" \ "chain,id:13078,phase:2,deny,status:429,setenv:RATELIMITED_CLAUDEBOT,\ log,msg:'RATELIMITED CLAUDEBOT'" SecRule REQUEST_HEADERS:User-Agent "@pm ClaudeBot"Header always set Retry-After "3" env=RATELIMITED_CLAUDEBOTErrorDocument 429 "Too Many Requests"
Amazonbot
# Limit Amazonbot hits by user agent to one hit per 3 secondsSecRule REQUEST_HEADERS:User-Agent "@pm Amazonbot" \ "id:13079,phase:2,nolog,pass,setuid:%{request_headers.host},\ setvar:user.ratelimit_amazonbot=+1,expirevar:user.ratelimit_amazonbot=3"SecRule USER:RATELIMIT_AMAZONBOT "@gt 1" \ "chain,id:13080,phase:2,deny,status:429,setenv:RATELIMITED_AMAZONBOT,\ log,msg:'RATELIMITED AMAZONBOT'" SecRule REQUEST_HEADERS:User-Agent "@pm Amazonbot"Header always set Retry-After "3" env=RATELIMITED_AMAZONBOTErrorDocument 429 "Too Many Requests"
تطبیق قوانین برای سایر ربات ها
ساختار برای هر ربات یکسان است. برای افزودن پوشش برای یک ربات جدید، هر مجموعه ای از قوانین را کپی کنید و دو تغییر ایجاد کنید:
- رشته User-Agent (به عنوان مثال GPTBot) را با شناسه ربات جدید جایگزین کنید.
- مقادیر id منحصر به فرد و نام متغیر env منحصر به فرد را برای جلوگیری از تضاد با قوانین موجود تنظیم کنید.
فیلد id باید در کل پیکربندی ModSecurity شما منحصر به فرد باشد. اگر آنها را به مجموعه قوانین موجود اضافه میکنید، قبل از اختصاص شناسههای جدید، بررسی کنید که چه شناسههایی از قبل در حال استفاده هستند. برخوردها باعث می شود قوانین بی سر و صدا شکست بخورند.
برای مرجع، فهرست رو به رشدی از رشتههای عامل کاربر خزنده هوش مصنوعی شامل Bytespider، CCBot، Google-Extended، Meta-ExternalAgent، و PerplexityBot و غیره است. پروژه Dark Visitors یک کاتالوگ نسبتاً به روز از شناسه های عامل AI شناخته شده دارد.
بعد از استقرار چه اتفاقی می افتد
پس از فعال شدن این قوانین، رباتی که در یک پنجره 3 ثانیه ای دو درخواست به یک نام میزبان ارسال کند، در درخواست دوم 429 دریافت می کند. هدر Retry-After: 3 به آن می گوید که قبل از تلاش مجدد صبر کند.
از آنجا، رفتار به دو دسته تقسیم می شود:
ربات هایی که به عنوان احترام می گذارند به طور خودکار کند می شود. آنها همچنان محتوای شما را با نرخی فهرست می کنند که سرور شما از عهده آن بر می آید. منابع ذخیره می شوند و سایت شما برای روبات هایی که ارزش مراقبت از آنها را دارند در دسترس باقی می ماند.
ربات هایی که عنوان را نادیده می گیرند به فشار دادن قانون انکار در هر درخواست بعدی ادامه دهید تا زمانی که منطق تلاش مجدد داخلی آنها شروع شود یا ادامه دهند. در هر صورت، آنها کسری از منابعی را که در اختیار دارند بدون محدودیت سرعت مصرف می کنند.
شما مشکل اساسی شرکت های هوش مصنوعی که ربات های تهاجمی را بدون رضایت به کار می برند را حل نمی کنید. اما شما دیگر متحمل هزینه عملیات نمایه سازی آنها روی سخت افزار خود نمی شوید.
پیش نیازها و جایی که این قوانین اعمال می شوند
این خطمشیها نیاز دارند که ModSecurity روی سرور شما نصب و فعال شود. در سرورهای اختصاصی InMotion Hosting و برنامههای VPS، ModSecurity از طریق رابط cPanel WHM در Security Center > ModSecurity در دسترس است. قوانین را می توان به عنوان قوانین سفارشی از طریق WHM یا مستقیماً در پوشه پیکربندی ModSecurity روی سرور شما اضافه کرد.
اگر از یک سرور اختصاصی مدیریت شده استفاده می کنید، تیم پشتیبانی محصول پیشرفته InMotion Hosting می تواند به استقرار یک قانون ModSecurity سفارشی کمک کند. مشتریان Premier Care فقط برای این نوع پیکربندی سرور سفارشی به InMotion Solutions دسترسی دارند.
محیط های میزبانی مشترک از خط مشی های ModSecurity سفارشی در سطح حساب پشتیبانی نمی کنند. اگر ترافیک تهاجمی ربات مشکل میزبانی مشترک است، گزینهها به بلوکهای htaccess. یا ارتقا به VPS یا سرور اختصاصی که در آن قابلیت پیکربندی کامل WAF را دارید محدود میشود.
یادداشتی در مورد robots.txt
هیچ یک از اینها جایگزین یک ساختار خوب نیست robots.txt فایل حفظ دستورالعملهای آهسته خزیدن برای رباتهای سازگار ارزشش را دارد، و فهرست کردن صریح رباتهای هوش مصنوعی که میخواهید محدود کنید، یک سیگنال مستند از قصد اضافه میکند، حتی اگر برخی از رباتها آن را نادیده بگیرند. قوانین ModSecurity بر اجرای مواردی که خودتنظیم نمیشوند، حاکم است.
robots.txt برای ربات های متعهد به قرارداد. محدود کردن نرخ ModSecurity برای کسانی که این کار را نمی کنند. این دو لایه با هم کار می کنند.
خلاصه
رباتهای آموزشی هوش مصنوعی به روشی که رباتهای جستجوی سنتی انجام میدهند روی robots.txt نظارت نمیکنند و بار ترکیبی چندین عملیات نمایهسازی همزمان میتواند عملکرد سرور را برای ترافیک قانونی کاهش دهد. محدود کردن نرخ مبتنی بر عامل کاربر ModSecurity به شما کنترل سمت سرور را می دهد که این ربات ها چقدر می توانند منابع را درخواست کنند بدون اینکه مجبور باشید آنها را از فهرست کردن کامل سایت شما مسدود کنید.
اجرای قوانین آسان است، با کپی کردن الگو به هر رباتی گسترش مییابد، و سیگنال صریح را از طریق سربرگهای Retry-After برای رباتهایی که میتوانند از آنها پیروی کنند، ارائه میدهند.
اگر جهشهای غیرقابل توضیحی در بار سرور یا حجم درخواست HTTP مشاهده میکنید که با ترافیک واقعی کاربر مرتبط نیست، قبل از اینکه فرض کنید با چیز پیچیدهتری سروکار دارید، گزارشهای دسترسی عامل کاربر ربات هوش مصنوعی خود را بررسی کنید.




