Amirali Yaghoutiمهندس ارشد نرم‌افزار

مطالعه موردی مهندسی

بات عیب‌یاب سئوی وردپرس

ارزیابی یک سایت وردپرس معمولاً یعنی نصب افزونه روی همان سایت، و این دقیقاً کاری است که صاحب یک فروشگاه پروداکشن نمی‌خواهد بکند. این سرویس با REST API وصل می‌شود، آن هم با اعتبارنامه‌ای که خود مالک می‌سازد و هر وقت بخواهد باطل می‌کند، و سایت را از بیرون می‌خواند.

مسئله تجاری

ابزار ممیزی سایت یا چک‌لیست عمومی است و کاری ندارد که روی سایت واقعاً چه نصب شده، یا افزونه‌ای است که به همان سایت پروداکشنِ تحت ممیزی کد اضافه می‌کند. هیچ‌کدام روی یک فروشگاه زنده قابل قبول نیست: اولی توصیه‌ای می‌دهد که مصداق ندارد، دومی به سیستمی که اصلاً برای پایداری‌اش دارید ممیزی می‌کنید سطح حمله اضافه می‌کند.

آنچه تحویل دادم

  • یک سرویس FastAPI که رابط مرورگری و API قابل فراخوانی را روی یک هسته‌ی مشترک می‌دهد.
  • یک کانکتور وردپرس که با رمز اپلیکیشن روی REST API احراز هویت می‌کند و لازم نیست چیزی روی سایت هدف نصب شود.
  • پیکربندی جدا از منطق، که اندپوینت، اعتبارنامه‌ها و انتخاب موتور را مستقل از تحلیل نگه می‌دارد.
  • یک نوع خطای اختصاصی برای کانکتور، تا سایتی که در دسترس نیست، دسترسی نمی‌دهد یا پاسخ غیرمنتظره برمی‌گرداند، خرابی زیرساخت خوانده شود نه یافته‌ی ممیزی.
  • انتخاب مدل از روی پیکربندی، تا موتور استدلال بدون دست‌زدن به کد تشخیص عوض شود.
  • CORS طوری پیکربندی شده که بعداً بشود یک فرانت‌اند جدا اضافه کرد، بدون بازسازی سرویس.

رویکرد فنی

  • رمز اپلیکیشن، به‌جای افزونه یا کلیدی که مال من باشد. مالک خودش صادرش می‌کند، آن را در حساب کاربری‌اش می‌بیند و آخر کار هم خودش باطلش می‌کند.
  • کانکتور پشت ماژول و نوع خطای خودش جدا شده، چون بیشتر خرابی‌های واقعی اینجا مشکل شبکه و دسترسی است و گزارش‌کردنشان به‌عنوان یافته، مستقیماً گمراه‌کننده است.
  • اعتبارنامه‌ها فقط در لایه‌ی پیکربندی ذخیره می‌شوند و هیچ‌وقت وارد مسیر تحلیل نمی‌شوند، پس راهی نیست که سر از یک گزارش دربیاورند.
  • یک هسته پشت دو رابط؛ هرچه نمای مرورگری نشان می‌دهد، از برنامه هم قابل گرفتن است.

نتیجه و شواهد

می‌شود یک نصب زنده‌ی وردپرس یا ووکامرس را بدون نصب چیزی روی آن ارزیابی کرد، و یافته‌ها به چیزی اشاره می‌کنند که همان سایت واقعاً دارد. دسترسی را مالک سایت می‌دهد و خودش هم پس می‌گیرد.

اهمیت برای کارفرما

برای کسی که چند فروشگاه را نگه می‌دارد، مهم این است که ارزیابی چیزی به پروداکشن اضافه نمی‌کند: دسترسی خواندنیِ قابل ابطال، و بدون افزونه‌ی اضافه.

خلاصه-اجرایی-پروژه

خلاصه اجرایی خوانا

خلاصه_اجرایی {
  پروژه: "WordPress SEO Doctor Bot"
  پشته: "Python، FastAPI، Jinja2، Pydantic"
  دسترسی: "WP REST API + رمز اپلیکیشن، قابل ابطال توسط مالک"
  نصب_روی_هدف: "هیچ"
  چیدمان: "core/wp_connector + core/config، جداشده"
  خطاها: "نوع خطای اختصاصی کانکتور؛ شکست انتقال و دسترسی
          هیچ‌وقت به‌شکل یافته خوانده نمی‌شود"
  موتور: "قابل انتخاب از پیکربندی، نه هاردکد"
  سطوح: "رابط مرورگری و API روی یک هسته"
}

ارزش حرفه‌ای این پروژه

مدل اعتماد، خودِ طراحی است. اینکه از یک مالک بخواهی کد من را روی فروشگاه پروداکشنش نصب کند تا بفهمد سالم است یا نه، درخواستی است که بیشترشان حق دارند رد کنند.

دادن یک نوع خطای اختصاصی به کانکتور کار کوچکی است، ولی نویز زیرساخت را از یافته‌ها بیرون نگه می‌دارد. همین است که یافته‌ها را ارزش خواندن می‌دهد.