خطای 429 در وردپرس چیست؟ رفع ارور HTTP 429
راستش را بخواهید خطاهای رایج بلای جان سایت ما هستند. از انواع ارور در برنامهنویسی سایت گرفته تا خطاهایی که مربوط به سرور و حتی کلاینت مشتری هستند. خطای 429 در وردپرس و دیگر سیستمها نیز یکی دیگر از این خطاها است که بیشتر ما آن را میبینیم. این خطا که پیغام too many requests را برمیگرداند به این معنی است که درخواستهای زیادی از طرف کلاینت(بازدیدکننده) برای سایت ارسال شده است.
منظور از درخواست در اینجا میتواند هر نوع درخواستی برای دریافت داده باشد. از بارگیری انواع فایل گرفته تا درخواستهایی که مربوط به دیتابیس هستند و باید اطلاعاتی را برگردانند. این خطاها میتواند در چندین لایه مختلف رخ دهد که در ادامه مقاله بیشتر به آنها اشاره خواهم کرد.
در ادامه این مقاله طبق تجربیاتی که داشتم میخواهم بیشترین دلیلی که باعث بروز مشکل 429 در سایت شده را بررسی کنم و بیشترین دلایلی که موجب این خطا میشود را بررسی و برای هر کدام یک راهکار پیشنهاد کنم. پس اگر شما هم حالا با این ارور در سایت خود مواجه شدید، تا پایان این مقاله با من همراه باشید.
خطای 429 در وردپرس چیست؟
قبل از هر چیز لازم است بدانید که ارور ۴۲۹ صرفا محدود به وردپرس نیست. در سیستمهای مدیریت محتوای دیگر، انواع بازی، نرم افزار و… این ارور مشاهده میشود. همانطور هم که اشاره کردم این خطا پیغام too many requests را برمیگرداند که یعنی شما به عنوان بازدیدکننده درخواست زیاد و صد البته تکراری را به سرور برای دریافت داده ارسال کردهاید.
بسته به اینکه از چه مرورگر و با چه ورژنی استفاده کنید، این خطا با وضعیتهای دیگری نیز نمایش داده میشود که برخی از آنها عبارتند از:
- 429 error
- HTTP 429
- (Error 429 (Too Many Requests
کلمه کلیدی 429 و too many requests در همه حالتها تکرار شده که مشخصا هر زمان این دو را دیدید، بدانید که علت آن به درخواستهای زیاد برمیگردد.
اما ممکن است از خود بپرسید که چرا این خطا ایجاد میشود.؟
به طور کلی به وجود آمدن ارور ۴۲۹ میتوانید دو دلیل عمده زیر را داشته باشد:
خطاهایی در برنامه نویسی سایت
در این حالت سایت شما به دلیل ناهماهنگی که از نظر برنامه نویسی دارد موجب این مشکل میشود. به عنوان نمونه یک افزونه وردپرسی را آپدیت میکنید و به محض اینکه سایت را باز میکنید متوجه کندی خواهید شد. به دلیل اشتباهی که ممکن است در کد نویسی افزونه وجود داشته باشد، یک سری دیتا به تعداد زیاد درخواست شدهاند که حالا سرور قادر به پاسخگویی کامل به همه این درخواستها نیست و برای همین این مشکل ایجاد میشود.
در یک تجربه که برای این مورد داشتم، در یکی از نسخههای افزونه redirection که برای ریدایرکت در وردپرس استفاده میشود، دچار این مشکل شده و لینکهای ریدایرکت شده مدام به صفحات مختلفی ریدایرکت میشدند. حتی یک بار هم این تجربه را داشتم که از ریدایرکت REgex به اشتباه استفاده کردم که مدام صفحه در حالت ریدایرکت شدن به یکدیگر بود.
درخواستهای زیادی که در این مدت برای ریدایرکت میشد در نهایت باعث شد که هم خطای too many redirects را دریافت کنم و هم اینکه در ریدایرکت اشتباهی که برای یک لینک خاص داشتم، به دلیل بازدید بالای سایت خطای 429 در وردپرس رخ داد.
ایجاد خطا توسط افراد مخرب
مورد بعدی که باعث خطای 429 در کلودفلر نیز خواهد شد، دستهای پشت پرده و افرادی است که قصد دارند به سایت شما صدمه وارد کنند. اما منظور از این افراد چه کسانی هستند؟
به زبان ساده حملات دیداس DDos و بروت فورس نیز باعث بروز خطای HTTP 429 خواهند شد. در این روش هکر با استفاده از ابزارهایی که در اختیار دارد تعداد درخواستهای زیادی را روانه سایت شما خواهد کرد. از تلاش برای ورود به مدیریت و ناحیه کاربری در سایت گرفته تا درخواستهایی که برای ارسال دیدگاه، پر کردن فرمها، اجرای کوئریهایی که نیاز به پردازش دارند و… با هم اجرا خواهند شد.
شدت این درخواستها در لحظه به قدری بالا است که شاید در لحظه برای فرم ارسال نظرات در وردپرس بیش از هزاران درخواست ارسال شود. روشن است که در چنین شرایطی سرور و هاست وردپرس شما با توجه به حداکثر منابعی که در اختیارتان قرار داده شده است پاسخگوی این درخواستها نبوده و در نهایت ارور 429 پدیدار خواهد شد.
نحوه رفع خطای HTTP 429 در وردپرس
حال که با دلایل بروز ارور 429 HTTP آشنا شدید، در ادامه با توجه به دو حالتی که برای به وجود آمدن این خطا وجود دارد راهکارهایی را به منظور رفع آن به شما پیشنهاد میکنم. میتوانید به کمک روشهای معرفی شده این خطا را از سایت خود رفع کنید.
قدم صفر: فایل لاگ و درخواستهای HTTP را بررسی کنید
بهترین و سریعترین روش برای حل این خطا این است که مطمئن شوید حملات و درخواستهای غیرواقعی در سایت شما وجود نداشته باشد. برای این منظور میتوانید فایل error log هاست خود را بررسی کرده و جدیدترین رخدادهای ثبت شده در آن را ببینید.
در این فایل بر اساس تاریخ و ساعت کلیه گزارشات خطا ثبت میشوند که اگر مشکلی از نظر برنامه نویسی در افزونه، قالب یا حتی تغییراتی که در هسته وردپرس ایجاد شده وجود داشته باشد نمایش داده خواهد شد.
اگر از هاست سی پنل هم استفاده میکنید میتوانید با مراجعه به بخش آمار که از منوی stats قابل دسترسی است، درخواستهای HTTP که بر اساس تاریخ و زمان به صورت کامل درج شده را ببینید. هر درخواست مشکوکی که مشاهده کردید میتواند به شما در فهمیدن اینکه درخواستهای ماشینی هستند یا واقعا از طرف کاربر ایجاد شده را ببینید.
البته این نکته را هم باید در نظر بگیرید که بیشتر اوقات خطاهای برنامه نویسی خود باعث ایجاد درخواستهایی میشوند که ماشینی به نظر میرسند. اما برای اینکه بتوان آنها را تشخیص داد باید ip درخواست کنندهها را بررسی نمود.
قدم اول: افزونههای وردپرس را غیرفعال کنید
در بیشتر اوقات افزونهها و تداخلی که بین دو افزونه ایجاد شده باعث خطای too many requests در وردپرس میشود. برای اینکه مطمئن شوید افزونهای در سایت شما موجب این خطا نشده، کافی است کلیه افزونهها را غیر فعال کرده و بررسی کنید که آیا همچنان مشکل پابرجاست یا نه؟
بیشتر افزونههایی که باعث ایجاد این ارور میشوند عبارتد از:
- افزونههای امنیتی
- افزونههایی که درخواستهای HTTPS داشته یا برای ریدایرکت استفاده میشوند.
- ابزارهای وردپرس که باعث تغییر URLs میشوند.
ممکن است که برای غیرفعال کردن افزونهها به پیشخوان وردپرس دسترسی نداشته باشید. برای این منظور کافی است مشابه تصویر زیر به مسیر /public_html/wp-content/ در هاست خود رفته و نام پوشه plugins را به یک نام دلخواه تغییر دهید. برای اطلاعات بیشتر در این خصوص به مقاله غیرفعال کردن افزونه در وردپرس مراجعه کنید که روشهای مختلفی برای غیر فعال کردن افزونه در وردپرس را شرح دادیم.
اگر خطای 429 در وردپرس برطرف شده بود، کافی است مجددا نام پوشه plugins را به حالت قبل برگردانید و به پیشخوان وردپرس برای فعال کردن افزونههای سایت خود مراجعه کنید. اما دقت کنید که باید پس از فعال کردن هر افزونه سایت را بررسی کنید تا ببینید پس از فعال کردن کدام افزونه خطا مجددا رخ میدهد. در این حالت افزونه معیوب را پیدا خواهید کرد.
قدم دوم: از قالب پیشفرض وردپرس استفاده کنید
اگر قالب رایگان یا قالب اختصاصی برای سایت خود تهیه کردید به دلیل اینکه پشتیبانی برای این نوع قالبها در حد قالبهای پرمیوم و عمومی نیست، خطاهای برنامه نویسی زیاد بوده و برای همین ممکن است حالا خودشان را در شرایط خاصی نشان داده باشند.
در چنین شرایطی مشابه روشی که برای افزونهها گفته شد، کافی است قالب سایت خود را تغییر دهید. اما از آنجایی که ممکن است دسترسی به پیشخوان وردپرس هم فراهم نباشد، میتوانید از روش زیر اقدام کنید.
ابتدا وارد هاست خود شده و سپس به مسیر File manager مراجعه کنید.
سپس همانطور که در تصویر زیر مشاهده میکنید، مسیر /public_html/wpcontent/themes/ را دنبال کنید. سپس نام پوشه قالب فعلی را تغییر دهید. در این صورت وردپرس از قالب پیشفرض برای نمایش سایت استفاده خواهد کرد.
اگر قالب پیشفرضی در این پوشه وجود ندارد کافی است یکی از قالبهای وردپرس را در این مسیر آپلود کنید. اگر مشکل با انجام این کار حل شده باشد، باید قالب سایت خود را همراه با لاگ خطا بررسی کرده و ببینید که ایراد قالب از کجاست و آن را رفع کنید. پس از رفع ایراد قالب مجددا قالب را با ورژن تغییر یافته آپلود کرده و نصب کنید.
قدم سوم: تغییر آدرس ورود به وردپرس
اگر قدم صفر را به درستی بررسی کردید و متوجه شدید که حملات از نوع بروت فورس هستند، کافی است ۱ یا ۳ لول به سطح امنیت صفحه ورود وردپرس خود اضافه کنید. پس از این در مقاله افزایش امنیت وردپرس روشهایی را برای این منظور معرفی کردم.
سادهترین راه برای انجام این کار استفاده از افزونه WPS Hide Login یا افزونه امنیتی وردفنس است که این ویژگی را در کنار دهها راهکار امنیتی دیگر دارد. میتوانید با این دو افزونه صفحه ورود به سایت خود را تغییر دهید تا از شر تلاشهایی که برای ورود به سایت شما میشود راحت شوید.
علاوه بر این افزونهها میتوانید از ورود دو مرحلهای در وردپرس نیز استفاده کنید. افزونههای مختلفی هم وجود دارند که امکان ورود دو مرحلهای در وردپرس را به کمک google authenticator، کد پیامکی و کد ایمیلی فراهم میکنند که میتوانید از آنها استفاده کنید. همچنین گذاشتن رمز روی پوشه wp-admin نیز یکی دیگر از این راهکارها است.
یکی دیگر از روشها نیز استفاده از افزونه کپچا است. میتوانید با جستجوی google captcha یا math captcha به دهها افزونه مختلف برای این کار دسترسی داشته باشید. از آنجایی که درخواستهای ورود به سایت از طریق نرم افزار انجام میگیرد، این نرم افزارها قادر به حا کپچا نبوده و دیگر امکان تلاش برای ورود به پیشخوان وردپرس را نخواهند داشت.
قدم چهارم: از شبکه توزیع محتوا CDN استفاده کنید
در پایان راهکار دیگری که میتواند این مشکلات را در حجم گسترده برطرف کند استفاده از شبکه توزیع محتوا یا همان CDN آست. میتوانید برای این کار از سایتهای خارجی مثل کلودفلر یا سایت ایرانی ابر آروان استفاده کنید.
این راهکار بیشتر برای زمانی که حملات دیداس و بروت فورس دارید قابل استفاده است تا از درخواستهای رباتی جلوگیری شود. این سایتها نیز دارای ویژگی فایروال برای محدود کردن ip و افزایش لایههای امنیتی برای این نوع حملات هستند.
قدم پنجم: با پشتیبانی هاست خود در ارتباط باشید
مطمئن باشید که تیم پشتیبانی هاستینگ همچون پاورسرور در چنین شرایطی کنار شما هستند. بنابراین توضیحات لازم را با ایجاد یک تیکت برای پشتیبان بنویسید و از آنها برای حل مشکل کمک بخواهید.
با توجه به اینکه در به وجود آمدن ارور HTTP 429 در ابعاد وسیع ممکن است شخص یا اشخاصی با هدف حمله و ضربه زدن به سایت دخیل باشند، با دسترسی کاملی که هاستینگ به سرور دارد ابزار بیشتری برای شناسایی نوع خطا، مسیر و رفع آن در دسترس خواهد بود.
جمع بندی و کلام آخر
همانطور که در جای جای مقاله اشاره کردم، متوجه شدید که چنین خطایی میتواند بیشتر از سمت برنامه نویسی اشتباه در سایت باشد، مگر اینکه خلاف آن ثابت شود؛ خلاف آن نیز چیزی جز حملات گسترده به سایت نیست.
اما متاسفانه به دلیل اینکه قالبهای پرمیوم وردپرس در ایران به صورت نال شده در حال فروش هستند و سهم بزرگی از فروشندگان این قالبها اصلا قالب را از مرجع اصلی خریداری نکردهاند، کدهای مخرب بسیار زیادی در قالبها و افزونهها وجود دارند. همین کدهای مخرب باعث ایجاد درخواستهای غیر واقعی در سایت شده و موجب بروز خطای 429 در وردپرس میشوند.
لذا توصیه اکید دارم که هیچگاه از سایتهای ایرانی قالبهای پرمیوم خارجی و افزونههای پولی را خریداری نکرده و به صورت دلاری از مرجع رسمی آن همراه با لایسنس معتبر خریداری کنید. این کار هم به نفع شماست تا هک در سایت و مشکلات این چنینی ایجاد نشود و هم اینکه در جهت رعایت حقوق کپی رایت است.
امیدواریم که این مقاله هم مورد توجه و پسند شما قرار گرفته و به کمک راهکارهایی که برای برطرف کردن ارور http 429 در وردپرس معرفی کردم مشکل خود را رفع کرده باشید.