ویرگول
ورودثبت نام
روزمرگی فنی
روزمرگی فنیروزها درگیر مصائب فنی، شب‌ها مشغول ثبت راه‌حل‌های یافتنی
روزمرگی فنی
روزمرگی فنی
خواندن ۳ دقیقه·۱ سال پیش

ربات‌های خزنده هوش مصنوعی، قاتل این روزهای مصرف سی‌پی‌یوی سایت شما!

اخیرا در یک وب‌سایت فروشگاهی وردپرسی به مشکل افزایش ناگهانی و غیرعادی میزان مصرف سی‌پی‌یو برخوردم؛ گزارش مصرف منابع سخت‌افزاری نشان می‌داد که طی دو ماه گذشته -آن هم بدون هیچ تغییر ویژه‌ای در سایت- مقدار مصرف سی‌پی‌یو به تقریبا ۶۰ الی ۱۰۰ درصد رسیده و در همین محدوده باقی مانده. ناگفته پیداست که با چنین سطح بالایی از مصرف سی‌پی‌یو، کمترین افزایش در ترافیک هم باعث از دسترس خارج شدن سایت و خطای ۵۰۳ می‌شد. چیزی که موضوع را مشکوک‌تر می‌کرد این بود که حتی در بازه زمانی ۱۲ شب تا ۶ صبح هم که اصولا ترافیک سایت بسیار پایین یا حتی صفر است مصرف سی‌پی‌یو همچنان همین‌قدر بالا بود، در نتیجه موضوع نمی‌توانست به افزایش ترافیک کاربران سایت ارتباطی داشته باشد.

بعد از قدری ور رفتن با گزینه‌های محتمل و ناکامی از یافتن سرنخ مشکل، نهایتا از بخش Site Summary / Statistics / Logs در دایرکت ادمین نگاهی به لاگ مصارف سایت انداختم و اینجا بود که موضوع جالب شد (در سی‌پنل از بخش Metrics / Raw Access می‌توان به همین لاگ‌ها دسترسی داشت).
در این لاگ‌ها چیزی که بیش از همه خودنمایی می‌کرد، نام ربات خزنده Claudebot متعلق به شرکت Anthropic (از رقبای OpenAI) بود که وظیفه‌اش جمع‌آوری داده‌هایی برای کمک به بهبود مدل‌ زبانی مبتنی بر هوش مصنوعی است. یک نگاه سرسری به لاگ‌ها نشان می‌داد که این ربات بزرگوار گویا اعتقادی به قوانین اسکرپینگ ندارد! و در عوض به شکل تهاجمی و با ارسال تعداد بسیار زیادی درخواست در هر ثانیه از آی‌پی‌های مختلف رسما سایت را شخم می‌زند و در نتیجه بار زیادی را به سرور تحمیل می‌کند.

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

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

User-agent: ClaudeBot Disallow: /

در نتیجه گزینه آخر این بود که دسترسی ربات خرنده از طریق فایل htaccess مسدود بشود:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ClaudeBot [NC] RewriteRule .* - [F,L] </IfModule>

این روش موفقیت‌آمیز بود و تمام درخواست‌های کلادبات غیرمجاز شد (پاسخ 403 به درخواست‌ها). حالا نوبت به بررسی مصارف سی‌پی‌یو می‌رسید.

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

نمودار مصرف ساعتی cpu
نمودار مصرف ساعتی cpu


نمودار مصرف cpu در 24 ساعت پس از مسدودسازی ربات خزنده claudebot
نمودار مصرف cpu در 24 ساعت پس از مسدودسازی ربات خزنده claudebot

پ.ن: به علاوه در لابلای لاگ‌ها ربات خزنده دیگری هم به نام Amazonbot وجود داشت که آمازون برای جمع‌آوری اطلاعاتی مثل عناوین و تصاویر و لینک‌ها و کلیدواژه‌ها و کمک به دستیار هوش‌مصنوعی Alexa از آن استفاده می‌کند و ضمنا به نظر می‌رسد که Claudebot هم برای عملیات اسکریپینگ از سرورهای AWS آمازون استفاده می‌کند (شرکای جرم!). این ربات هم به هر دو روش بالا بلاک شد.

وندا نوژن

هوش مصنوعیوب اسکرپینگ
۲
۱
روزمرگی فنی
روزمرگی فنی
روزها درگیر مصائب فنی، شب‌ها مشغول ثبت راه‌حل‌های یافتنی
شاید از این پست‌ها خوشتان بیاید