
در دنیای امروز، بخش قابل توجهی از ترافیک اینترنت توسط ربات ها (Bots) تولید می شود. آمارها نشان می دهد که حداقل ۴۰ درصد از کل ترافیک وب مربوط به ربات ها است . این ربات ها برنامه های نرم افزاری هستند که برای انجام وظایف خودکار در اینترنت طراحی شده اند و می توانند کارهایی مانند اسکن کردن وب سایت ها، پاسخ به پیام ها یا ارسال فرم ها را بدون دخالت مستقیم انسان انجام دهند .
ربات های اینترنتی طیف گسترده ای از کاربردها را شامل می شوند. در یک سوی این طیف، ربات های مفید و ضروری قرار دارند که ستون فقرات اینترنت مدرن را تشکیل می دهند؛ مانند ربات های خزنده موتورهای جستجو که وب سایت ها را ایندکس می کنند. در سوی دیگر، ربات های مخرب قرار دارند که برای اهداف سوء مانند سرقت اطلاعات، اسپم و حملات سایبری طراحی شده اند .
برای صاحبان وب سایت ها، مدیریت تعامل با این ربات ها به یک چالش اساسی تبدیل شده است. از یک سو، باید دسترسی ربات های مفید (مانند گوگل بات) را برای دیده شدن در نتایج جستجو فراهم کنند. از سوی دیگر، باید از وب سایت خود در برابر ربات های مخربی که منابع سرور را هدر می دهند، محتوای ارزشمند را می دزدند و امنیت را به خطر می اندازند، محافظت کنند .
در این مقاله، ابتدا با انواع ربات های اینترنتی آشنا می شویم، سپس روش های شناسایی ربات های مخرب را بررسی می کنیم و در نهایت به طور عملی نحوه بلاک کردن آنها از طریق فایل .htaccess را با مثال های متنوع آموزش می دهیم.
ربات های اینترنتی چیستند و چگونه عمل می کنند؟
ربات اینترنتی (Internet Bot) یک برنامه نرم افزاری است که برای انجام وظایف خودکار در بستر اینترنت طراحی شده است . این برنامه ها می توانند وظایفی را انجام دهند که انسان ها قادر به انجام آنها هستند، اما با سرعت، دقت و مقیاسی بسیار بالاتر .
ربات های مفید (Good Bots)
ربات های مفید برای انجام وظایف قانونی و اخلاقی طراحی شده اند و بخش جدایی ناپذیر از تجربه روزمره ما در اینترنت هستند :
- ربات های خزنده موتورهای جستجو (Search Engine Crawlers): این ربات ها مانند گوگل بات، بینگ بات و یاندکس، صفحات وب را دنبال کرده و محتوای آنها را برای ایندکس شدن در نتایج جستجو جمع آوری می کنند . بدون این ربات ها، موتورهای جستجو قادر به ارائه نتایج مرتبط به کاربران نبودند .
- چت بات ها (Chatbots): این ربات ها برای شبیه سازی مکالمه با کاربران طراحی شده اند. معمولاً در وب سایت ها و اپلیکیشن های پیام رسان برای پاسخ به سوالات متداول، راهنمایی کاربران و انجام تراکنش ها استفاده می شوند .
- ربات های مانیتورینگ (Monitoring Bots): این ربات ها عملکرد وب سایت ها، در دسترس بودن و وقوع رویدادهای امنیتی را رصد می کنند و در صورت بروز مشکل، به مدیران سیستم هشدار می دهند .
- ربات های خرید (Shopping Bots): این ربات ها به کاربران کمک می کنند تا بهترین قیمت ها را پیدا کنند، تغییرات قیمت را ردیابی کنند یا از موجود شدن مجدد کالا مطلع شوند .
ربات های مخرب (Bad Bots)
در مقابل، ربات های مخرب برای انجام فعالیت های غیرقانونی یا نقض قوانین و مقررات وب سایت ها طراحی شده اند. این ربات ها مسئول بخش قابل توجهی از حملات سایبری هستند :
- ربات های اسپم (Spambots): این ربات ها آدرس های ایمیل را جمع آوری کرده و پیام های ناخواسته ارسال می کنند. همچنین ممکن است حساب های کاربری جعلی در شبکه های اجتماعی ایجاد کرده و محتوای اسپم منتشر کنند .
- ربات های اسکرپر (Scraper Bots): این ربات ها داده های خاصی را از وب سایت ها استخراج می کنند، مانند قیمت محصولات، اطلاعات تماس یا محتوای متنی. اگرچه برخی استفاده های قانونی از اسکرپینگ وجود دارد، اما بسیاری از این ربات ها محتوای وب سایت ها را بدون اجازه کپی کرده و به سرقت می برند . این کار می تواند به کسب و کارها از طریق تضعیف سئو یا کپی شدن محتوای اختصاصی آنها آسیب برساند .
- ربات های اعتبارسنجی (Credential Stuffing Bots): این ربات ها از اطلاعات ورود به سیستم (نام کاربری و رمز عبور) که در حملات قبلی به سرقت رفته است، برای تلاش جهت ورود به حساب های کاربری در سایر سرویس ها استفاده می کنند. این روش از عادت کاربران به استفاده مجدد از رمزهای عبور مشابه در چندین سایت سوء استفاده می کند .
- ربات های DDoS: شبکه ای از دستگاه های آلوده (بات نت) برای هدایت حجم عظیمی از ترافیک به یک وب سایت یا سرور استفاده می شوند تا باعث اختلال در خدمات و غیرقابل دسترس شدن آن شوند .
- ربات های تقلبی (Impersonation Bots): این ربات ها در شبکه های اجتماعی و پلتفرم های پیام رسان خود را به عنوان کاربران واقعی یا حتی افراد مشهور جا می زنند تا کاربران را فریب دهند و اطلاعات شخصی یا پول آنها را بدست آورند.

شناسایی ربات های مخرب در وب سایت شما
قبل از هر اقدامی برای بلاک کردن، باید بتوانید ترافیک مشکوک را شناسایی کنید. روش های مختلفی برای این کار وجود دارد:
بررسی لاگ های سرور (Server Logs)
لاگ های سرور (مانند Apache یا Nginx) یکی از بهترین منابع برای شناسایی فعالیت ربات های مخرب هستند. به دنبال الگوهای زیر باشید :
- افزایش ناگهانی درخواست ها: اسپایک های غیرعادی در تعداد درخواست ها به یک آدرس خاص.
- الگوهای درخواستی مشکوک: درخواست های مکرر به فایل های حساس مانند `wp-login.php` یا `xmlrpc.php` در وب سایت های وردپرسی.
- یوزر ایجنت های خالی یا جعلی: درخواست هایی با یوزر ایجنت خالی یا یوزر ایجنت هایی که سعی در تقلب و شبیه سازی مرورگرهای معروف دارند.
- زمان های غیرعادی: افزایش ترافیک در ساعات غیرفعال (شب) که نشان دهنده فعالیت خودکار ربات هاست .
استفاده از ابزارهای تحلیل ترافیک
ابزارهایی مانند گوگل آنالیتیکس (GA4) یا ماتومو می توانند به شناسایی ترافیک غیرعادی کمک کنند :
- نرخ پرش بالا (Bounce Rate): نرخ پرش بسیار بالا یا پایین در صفحات خاص می تواند نشانه فعالیت ربات باشد.
- مدت زمان جلسه صفر (۰-sec Sessions): جلساتی که مدت زمان آنها صفر ثانیه ثبت شده است.
- ترافیک از کشورهای غیرمنتظره: حجم بالای ترافیک از کشورهایی که مخاطب هدف شما نیستند.
مصرف منابع سرور
اگر قانون ۸۰/۲۰ نقض شود (یعنی ۲۰ درصد از درخواست ها ۸۰ درصد منابع را مصرف می کنند) و این ترافیک ارزشی برای شما ایجاد نمی کند، احتمالاً با ربات های مخرب مواجه هستید .

آشنایی با فایل .htaccess و اهمیت آن
.htaccess یک فایل پیکربندی در سطح دایرکتوری است که توسط وب سرور Apache استفاده می شود. این فایل به شما امکان می دهد تنظیمات سرور را بدون نیاز به دسترسی به فایل اصلی پیکربندی Apache تغییر دهید . این فایل معمولاً در ریشه دایرکتوری وب سایت شما (معمولاً `public_html`) قرار دارد.
اهمیت فایل .htaccess در بحث بلاک کردن ربات ها به این دلیل است که قوانین نوشته شده در آن در ابتدای پردازش هر درخواست اعمال می شوند. این یعنی ترافیک ناخواسته قبل از بارگذاری کدهای برنامه (مانند وردپرس یا سایر CMSها) بلاک می شود و در نتیجه منابع سرور ذخیره شده و سرعت وب سایت برای کاربران واقعی افزایش می یابد .
قبل از هرگونه تغییر در فایل .htaccess، حتماً از آن یک نسخه پشتیبان تهیه کنید تا در صورت بروز خطا، بتوانید به حالت قبلی بازگردید .
روش های بلاک کردن ربات ها در .htaccess
دو روش اصلی برای بلاک کردن ربات ها در فایل .htaccess وجود دارد: بلاک بر اساس یوزر ایجنت (User-Agent) و بلاک بر اساس آدرس IP.
بلاک کردن بر اساس یوزر ایجنت
یوزر ایجنت یک رشته متنی است که کلاینت (مرورگر، ربات، یا نرم افزار دیگر) در هدر درخواست HTTP ارسال می کند تا خود را به سرور معرفی کند. به عنوان مثال، یک مرورگر کروم ممکن است یوزر ایجنتی مانند “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36…” ارسال کند و گوگل بات یوزر ایجنتی مانند “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” .
توجه: یوزر ایجنت ها به راحتی قابل جعل هستند، بنابراین بلاک کردن بر اساس یوزر ایجنت نباید تنها لایه امنیتی شما باشد، اما به عنوان یک فیلتر عملی برای جلوگیری از ربات های ساده و بی دقت بسیار مؤثر است .
سینتکس پایه با استفاده از mod_rewrite
پرکاربردترین روش استفاده از ماژول `mod_rewrite` است:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} BadBotName [NC]
RewriteRule .* – [F,L]
توضیح کد :
- `RewriteEngine On`: موتور بازنویسی را فعال می کند.
- `RewriteCond %{HTTP_USER_AGENT} BadBotName [NC]`: شرطی که بررسی می کند یوزر ایجنت درخواست با عبارت “BadBotName” مطابقت دارد یا خیر. `[NC]` به معنای “بدون توجه به حروف بزرگ و کوچک” است.
- `RewriteRule .* – [F,L]`: در صورت برقراری شرط، یک خطای ۴۰۳ (دسترسی ممنوع) می دهد. `[F]` به معنای “Forbidden” و `[L]` به معنای “Last” (آخرین قانون) است.
بلاک کردن چندین ربات
برای بلاک کردن چندین ربات، از `[OR]` بین شرط ها استفاده می کنیم:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} BadBotOne [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BadBotTwo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} EvilScraper [NC]
RewriteRule .* – [F,L]
در این مثال، اگر یوزر ایجنت با “BadBotOne” یا “BadBotTwo” یا “EvilScraper” مطابقت داشته باشد، درخواست بلاک می شود .
استفاده از Regex (عبارات منظم)
Regex به شما امکان می دهد الگوهای پیچیدهتری را برای شناسایی ربات ها تعریف کنید:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (python-requests|curl|wget) [NC]
RewriteRule .* – [F,L]
این کد هر درخواستی که یوزر ایجنت آن شامل “python-requests” یا “curl” یا “wget” باشد را بلاک می کند. این ابزارها معمولاً توسط اسکریپت های خودکار استفاده می شوند .
روش جایگزین با استفاده از SetEnvIfNoCase
روش دیگر استفاده از دستور `SetEnvIfNoCase` و سپس تعیین قانون Deny است:
<IfModule mod_setenvif.c>
SetEnvIfNoCase User-Agent ^$ bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.8.1+cvs" bad_bot
SetEnvIfNoCase User-Agent "^Zeus" bad_bot
<Limit GET POST>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>
</IfModule>
در این روش، متغیر محیطی `bad_bot` برای درخواست هایی که یوزر ایجنت آنها با الگوها مطابقت دارد، تنظیم می شود و سپس تمام درخواست های دارای این متغیر بلاک می شوند .
بلاک کردن بر اساس آدرس IP
اگر یک ربات خاص از یک آدرس IP یا محدوده IP مشخص به وب سایت شما حمله می کند، می توانید آن را مستقیماً بلاک کنید:
Order Allow,Deny
Deny from 123.456.789.0
Allow from all
برای بلاک کردن یک محدوده کامل از IPها، می توان از بخشی از آدرس استفاده کرد:
Order Deny,Allow
Deny from 123.456.
Allow from all
این کد تمام IPهای شروع شونده با “۱۲۳.۴۵۶.” را بلاک می کند .
نسخه `mod_rewrite` برای بلاک IP:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^123\.456\.789\. [OR]
RewriteCond %{REMOTE_ADDR} ^987\.654\.321\.
RewriteRule ^(.*)$ - [F,L]
این روش IPهای `۱۲۳.۴۵۶.۷۸۹.x` و `۹۸۷.۶۵۴.۳۲۱.x` را بلاک می کند .
لیست جامع یوزر ایجنت های مخرب
بر اساس تجربه و جمع آوری از منابع معتبر، در اینجا لیستی از یوزر ایجنت هایی که معمولاً به عنوان ربات های مخرب یا مزاحم شناسایی می شوند، ارائه شده است:
– MJ12bot – ربات خزنده یک موتور جستجو برای بکلینک ها
– DotBot – ربات خزنده
– BLEXBot – یک ابزار بازاریابی
– SemrushBot – ربات ابزار سئو (می تواند منابع سرور را به شدت مصرف کند)
– AhrefsBot – ربات ابزار سئو
– MegaIndex.ru – ربات اسکرپر
– python-requests – کتابخانه پایتون برای درخواست های HTTP
– curl – ابزار خط فرمان برای انتقال داده
– wget – ابزار خط فرمان برای دانلود محتوا
– scrapy – فریم ورک اسکرپینگ پایتون
– Yandex – موتور جستجوی روسی (در صورت عدم نیاز به ترافیک از این موتور)
– Baiduspider – ربات خزنده بایدو (موتور جستجوی چینی)
کد آماده برای کپی و استفاده در .htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MJ12bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} DotBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BLEXBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} SemrushBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} MegaIndex\.ru [NC,OR]
RewriteCond %{HTTP_USER_AGENT} python-requests [NC,OR]
RewriteCond %{HTTP_USER_AGENT} curl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wget [NC,OR]
RewriteCond %{HTTP_USER_AGENT} scrapy [NC]
RewriteRule .* – [F,L]
نکته: این لیست صرفاً یک نقطه شروع است. لیست های به روزتر و کاملتری مانند لیست ارائه شده توسط پروژه “bot-block-list” در گیتهاب وجود دارد که شامل صدها یوزر ایجنت است. با این حال، قبل از استفاده از لیستهای طولانی، حتماً تک تک آنها را بررسی کنید تا از بلاک شدن رباتهای مفید جلوگیری شود .
اقدامات احتیاطی و بهترین روش ها
از بلاک کردن ربات های مفید خودداری کنید
بسیار مهم است که هرگز ربات های موتورهای جستجوی اصلی مانند `Googlebot`، `bingbot` و `DuckDuckBot` را بلاک نکنید، زیرا این کار باعث خروج وب سایت شما از نتایج جستجو می شود .
همچنین، برخی رباتها مانند `facebookexternalhit` و `Facebot` برای نمایش پیشنمایش صفحات شما در فیسبوک ضروری هستند و بلاک کردن آنها ممکن است تجربه کاربری در شبکههای اجتماعی را مختل کند .
از عبارات منظم (Regex) با دقت استفاده کنید
عبارات منظم بسیار قدرتمند هستند اما میتوانند خطرناک نیز باشند. به عنوان مثال، استفاده از الگوی `(bot|crawl)` ممکن است هم رباتهای مخرب و هم رباتهای مفید (مانند Googlebot) را بلاک کند. بهتر است از عبارات منظم بسیار خاص استفاده کنید .
تست و پایش مستمر
پس از افزودن هر قانون جدید به .htaccess:
- وب سایت خود را به طور کامل تست کنید تا مطمئن شوید عملکرد عادی آن مختل نشده است.
- لاگهای سرور را به دقت بررسی کنید تا از بلاک شدن کاربران واقعی مطمئن شوید.
- لیست یوزر ایجنت های بلاک شده را به صورت دورهای بهروزرسانی کنید، زیرا رباتهای جدید دائماً ظاهر میشوند .
خطرات و اشتباهات رایج
یک نمونه جالب از اشتباهات رایج، استفاده از عبارت “rma” برای بلاک کردن یک ربات خاص است که باعث میشود هر یوزر ایجنتی شامل کلمه “performance” (که شامل “rma” است) به اشتباه بلاک شود. این مشکل باعث اختلال در عملکرد افزونههایی مانند WP Rocket میشود که از یوزر ایجنت “WP Rocket/Fetch Page Buffer for Performance Monitoring” استفاده میکنند .
محدودیتهای .htaccess
بلاک کردن با .htaccess یک راه حل مؤثر اما کامل نیست. برخی محدودیتها عبارتند از :
- رباتهای پیشرفته میتوانند یوزر ایجنت خود را به راحتی تغییر دهند.
- رباتها از هزاران IP مختلف استفاده میکنند و مدیریت دستی آنها غیرممکن است.
- برای حملات گسترده DDoS، .htaccess به تنهایی کافی نیست.
رویکرد لایهای (Layered Approach)
بهترین روش، ترکیب .htaccess با راهحلهای دیگر است :
- استفاده از CDN و WAF:
سرویسهایی مانند کلودفلر (Cloudflare) میتوانند بسیاری از رباتهای مخرب را قبل از رسیدن به سرور شما فیلتر کنند.
- استفاده از robots.txt:
اگرچه بسیاری از رباتهای مخرب آن را نادیده میگیرند، اما یک robots.txt صحیح میتواند رباتهای محترم را راهنمایی کند. باید توجه داشت که robots.txt مانند یک درخواست محترمانه عمل میکند و رباتهای مخرب به سادگی آن را نادیده میگیرند، در حالی که .htaccess مانند یک نگهبان واقعی عمل میکند .
جمع بندی
رباتهای اینترنتی بخش جداییناپذیر از اکوسیستم وب مدرن هستند. درک تفاوت بین رباتهای مفید و مخرب برای هر مدیر وبسایتی حیاتی است. فایل .htaccess در سرورهای Apache ابزاری قدرتمند و در دسترس برای بلاک کردن رباتهای مخرب است که به شما امکان میدهد از منابع سرور محافظت کنید و امنیت وبسایت را افزایش دهید.
با استفاده از روشهای شرح داده شده در این مقاله – از جمله بلاککردن بر اساس یوزر ایجنت با `mod_rewrite` و `SetEnvIfNoCase` و همچنین بلاککردن بر اساس آدرس IP – میتوانید به طور مؤثری بسیاری از تهدیدات خودکار را دفع کنید.
با این حال، همیشه به یاد داشته باشید که بلاک کردن با .htaccess یک راهحل جامع نیست و باید در کنار سایر اقدامات امنیتی مانند استفاده از WAF و پایش مستمر لاگها قرار گیرد. با رعایت اصول ذکر شده و بهروزرسانی مستمر قوانین، میتوانید وبسایت خود را در برابر تهدیدات رباتهای مخرب ایمنتر کنید.