آموزش‌های کلادفلر به‌زودی در این بخش قرار داده می‌شود.

برچسب: برنامه‌نویسی

  • مانگو دی‌بی (MongoDB) چیست؟ راهنمای کامل سرور دیتابیس

    برای اینکه بفهمیم مانگو دی‌بی چیه، اول باید ببینیم قبل از اون دنیا چه شکلی بود. سال‌ها، پادشاه بی‌چون‌وچرای دنیای دیتابیس‌ها، سیستم‌های مدیریت دیتابیس رابطه‌ای یا همون RDBMS بودن. اسم‌هایی مثل MySQL رو حتما شنیدید. این دیتابیس‌ها مثل یک جدول اکسل خیلی بزرگ و منظم عمل می‌کنن. همه چیز در قالب جدول‌ها، سطرها و ستون‌های از پیش تعریف شده ذخیره میشه. مثلا اگه یه دیتابیس برای دانشجوها داشته باشید، یه جدول دارید به اسم «دانشجو» با ستون‌های مشخص: شماره دانشجویی، نام، نام خانوادگی و… . این ساختار خیلی منظم و دقیقه و برای خیلی از کارها، مثل سیستم‌های مالی و حسابداری که داده‌ها ساختار کاملا مشخصی دارن، عالیه.

    اما دنیای مدرن یه چالش جدید ایجاد کرد. با اومدن اپلیکیشن‌های موبایل، شبکه‌های اجتماعی و اینترنت اشیا (IoT)، ما با حجم عظیمی از داده‌هایی روبرو شدیم که همیشه ساختار مشخص و منظمی نداشتن. به این نوع داده‌ها میگن داده‌های بدون ساختار یا نیمه‌ساختاریافته. مثلا پست‌های یک شبکه اجتماعی رو در نظر بگیرید. یه پست میتونه فقط متن باشه، یکی دیگه عکس و متن داشته باشه، یکی ویدیو و کپشن، و یکی دیگه ترکیبی از همه اینها با کلی تگ و کامنت. جا دادن این همه تنوع توی جدول‌های خشک و بی‌روح SQL خیلی سخت و گاهی غیرممکن بود. توسعه‌دهنده‌ها به ابزاری نیاز داشتن که انعطاف‌پذیر باشه و بتونه با این داده‌های متنوع و نامنظم کار کنه. این‌جا بود که دیتابیس‌های NoSQL (که مخفف Not only SQL هست) وارد میدون شدن و مانگو دی‌بی یکی از پرچم‌دارهای این نسل جدیده.

    مانگو دی‌بی دقیقا چیه؟ خداحافظی با جدول‌ها

    خب، بریم سر اصل مطلب. مانگو دی‌بی یک دیتابیس از نوع NoSQL و سند-گرا (Document-Oriented) هست. این یعنی چی؟ یعنی به جای اینکه داده‌ها رو توی سطر و ستون ذخیره کنه، اون‌ها رو توی ساختارهایی شبیه به اسناد JSON ذخیره می‌کنه. اگه با برنامه‌نویسی جاوا اسکریپت آشنا باشید، حتما با JSON کار کردید. JSON یه فرمت متنی ساده برای نمایش داده‌ها به صورت زوج‌های «کلید-مقدار» هست. مثلا اطلاعات یه کاربر میتونه این شکلی باشه:

    {
      "نام": "سارا",
      "نام_خانوادگی": "رضایی",
      "سن": 25,
      "علاقمندی‌ها": ["کتاب", "موسیقی", "سفر"]
    }

    مانگو دی‌بی داده‌ها رو در قالبی به اسم BSON ذخیره می‌کنه که مخفف Binary JSON هست. BSON در واقع نسخه باینری یا دودویی JSON هست که کارایی بالاتری داره و از انواع داده‌ای بیشتری مثل تاریخ و داده‌های باینری هم پشتیبانی می‌کنه.

    مزیت اصلی این مدل سند-گرا، انعطاف‌پذیری فوق‌العاده اونه. هر سند میتونه ساختار منحصر به فرد خودش رو داشته باشه. مثلا توی همون دیتابیس کاربرها، یه کاربر میتونه فیلد «ایمیل» داشته باشه و یکی دیگه نداشته باشه. یا یه کاربر فیلد «آدرس» داشته باشه که خودش شامل چند فیلد دیگه مثل شهر و خیابون هست. این ویژگی باعث میشه مدل داده‌ای دیتابیس شما خیلی به مدل داده‌ای اپلیکیشن شما نزدیک باشه و کار کردن باهاش برای توسعه‌دهنده‌ها خیلی راحت‌تر و سریع‌تر بشه. دیگه لازم نیست برای هر تغییر کوچیکی، کل ساختار دیتابیس رو عوض کنید.

    معماری و اجزای اصلی مانگو دی‌بی

    برای اینکه بهتر با کارکرد مانگو دی‌بی آشنا بشیم، بیایید اجزای اصلیش رو بشناسیم و با معادلشون توی دنیای دیتابیس‌های رابطه‌ای (RDBMS) مقایسه کنیم. این مقایسه کمک می‌کنه تصویر واضح‌تری تو ذهنتون شکل بگیره.

    جزء در مانگو دی‌بیمعادل در RDBMSتوضیحات
    دیتابیس (Database)دیتابیس (Database)بالاترین سطح ساختار که مجموعه‌ای از کالکشن‌ها رو در خودش نگه میداره.
    کالکشن (Collection)جدول (Table)گروهی از اسناد مرتبط. مثلا کالکشن «کاربران» یا کالکشن «محصولات».
    سند (Document)سطر (Row)واحد اصلی ذخیره‌سازی داده که یک شی BSON با زوج‌های کلید-مقدار هست.
    فیلد (Field)ستون (Column)یک ویژگی یا صفت خاص درون یک سند که داده‌ها رو نگه میداره.

    همونطور که می‌بینید، مفاهیم خیلی شبیه به هم هستن، اما فلسفه پشتشون کاملا متفاوته. توی مانگو دی‌بی، یک کالکشن میتونه اسنادی با ساختارهای کاملا متفاوت رو در خودش جا بده. این یعنی شما یک «شمای پویا» یا Schema-less دارید. لازم نیست از قبل تعریف کنید که هر سند چه فیلدهایی باید داشته باشه.

    برای مثال، فرض کنید یک دیتابیس به اسم «GeeksforGeeks» داریم. داخل این دیتابیس دو تا کالکشن داریم و داخل هر کالکشن هم دو تا سند. داده‌های ما داخل این سندها و در قالب فیلدها ذخیره میشن.

    ویژگی‌های کلیدی که مانگو دی‌بی رو خاص می‌کنن

    حالا که با کلیات مانگو دی‌بی آشنا شدیم، بیایید ببینیم چه ویژگی‌هایی باعث شده این دیتابیس اینقدر محبوب بشه.

    ۱. انعطاف‌پذیری و مدل سند-گرا

    این مهم‌ترین ویژگی مانگو دی‌بی هست که قبلا هم بهش اشاره کردیم. مدل سند-گرا مستقیما به اشیا (objects) در کد شما نگاشت میشه. این یعنی لازم نیست کلی کد بنویسید تا داده‌ها رو از فرمت جدولی به فرمت شی‌گرا تبدیل کنید. این انعطاف‌پذیری به شما اجازه میده داده‌های مرتبط رو توی یک سند واحد جاسازی کنید (embed کنید) که این کار باعث افزایش سرعت و کاهش هزینه‌های محاسباتی میشه.

    ۲. مقیاس‌پذیری افقی (Horizontal Scaling) با شاردینگ (Sharding)

    یکی از بزرگترین چالش‌ها در دنیای داده‌های بزرگ (Big Data) اینه که وقتی حجم داده‌ها خیلی زیاد میشه، چطور سیستم رو مدیریت کنیم. دو راه کلی وجود داره: مقیاس‌پذیری عمودی (Vertical Scaling) و مقیای‌پذیری افقی (Horizontal Scaling).

    • مقیاس‌پذیری عمودی: یعنی همون سرور فعلی رو قوی‌تر کنیم. مثلا رم و سی‌پی‌یو بیشتری بهش اضافه کنیم. این کار مثل اینه که ماشینتون رو با یه مدل قوی‌تر عوض کنید. اما این روش محدودیت داره و خیلی گرونه.
    • مقیاس‌پذیری افقی: یعنی به جای قوی‌تر کردن یک سرور، تعداد سرورها رو زیاد کنیم و داده‌ها رو بین اونها تقسیم کنیم. این روش خیلی به‌صرفه‌تر و انعطاف‌پذیرتره.

    مانگو دی‌بی از پایه برای مقیاس‌پذیری افقی طراحی شده. این کار رو با استفاده از تکنیکی به اسم شاردینگ (Sharding) انجام میده. در شاردینگ، داده‌های یک کالکشن بزرگ بر اساس یک کلید مشخص (shard key) به تکه‌های کوچکتری به اسم «چانک» (chunk) تقسیم میشن و هر تکه روی یک سرور مجزا (که بهش میگن shard) ذخیره میشه. این کار باعث میشه فشار کاری بین چندین ماشین پخش بشه و سیستم بتونه حجم عظیمی از داده و درخواست رو مدیریت کنه. این ویژگی، مانگو دی‌بی رو برای اپلیکیشن‌های بزرگ و با رشد سریع، ایده‌ال می‌کنه.

    ۳. دسترسی بالا (High Availability) با تکثیر (Replication)

    هیچ‌کس دوست نداره سیستمش از کار بیفته. مانگو دی‌بی برای اطمینان از اینکه دیتابیس شما همیشه در دسترسه، از مکانیزمی به اسم تکثیر یا Replication استفاده می‌کنه. این کار از طریق چیزی به اسم مجموعه تکثیر (Replica Set) انجام میشه.

    یک Replica Set شامل چند کپی از داده‌های شما روی سرورهای مختلفه. این مجموعه یک سرور اصلی (Primary) و چند سرور ثانویه (Secondary) داره. تمام عملیات نوشتن (write) به صورت پیش‌فرض روی سرور اصلی انجام میشه. سرورهای ثانویه به طور مداوم داده‌ها رو از سرور اصلی کپی می‌کنن و یک نسخه به‌روز از داده‌ها رو نگه می‌دارن.

    حالا اگه سرور اصلی به هر دلیلی از کار بیفته (مثلا به خاطر مشکل سخت‌افزاری)، مجموعه تکثیر به طور خودکار یک «انتخابات» برگزار می‌کنه و یکی از سرورهای ثانویه رو به عنوان سرور اصلی جدید انتخاب می‌کنه. این فرآیند که بهش Failover میگن، باعث میشه سیستم شما با کمترین وقفه به کارش ادامه بده. جالبه بدونید که برای جلوگیری از دوپاره شدن مغز (split-brain) در انتخابات، اگه فقط یک سرور ثانویه داشته باشید، باید یک عضو سوم به اسم داور (Arbiter) هم به مجموعه اضافه بشه که فقط در انتخابات رای میده و داده‌ای ذخیره نمی‌کنه.

    ۴. کوئری‌های قدرتمند و ایندکس‌گذاری

    مانگو دی‌بی فقط برای ذخیره داده نیست، بلکه ابزارهای خیلی قدرتمندی برای دسترسی و تحلیل داده‌ها هم فراهم می‌کنه. شما می‌تونید کوئری‌های موردی (Ad hoc queries) بزنید، یعنی بدون نیاز به تعریف قبلی، هر نوع جستجویی رو روی داده‌ها انجام بدید. این کوئری‌ها می‌تونن بر اساس فیلدهای خاص، محدوده‌های مشخص (range query) و حتی عبارت‌های باقاعده (regular-expression) باشن.

    برای اینکه این کوئری‌ها سریع اجرا بشن، مانگو دی‌بی از ایندکس‌گذاری (Indexing) پشتیبانی می‌کنه. درست مثل فهرست آخر یک کتاب که به شما کمک می‌کنه سریع‌تر به یک مطلب برسید، ایندکس‌ها هم به دیتابیس کمک می‌کنن تا اسناد مورد نظر شما رو بدون جستجوی کامل در کل کالکشن پیدا کنه. شما می‌تونید روی هر فیلدی در سند، ایندکس اولیه (primary) یا ثانویه (secondary) بسازید.

    ۵. تجمیع داده‌ها (Aggregation)

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

    • پایپ‌لاین تجمیع (Aggregation Pipeline): این روش اصلی و پرکاربردترین روشه. مثل یک خط مونتاژ کار می‌کنه که داده‌ها از مراحل مختلفی عبور می‌کنن و در هر مرحله یک عملیات خاص روشون انجام میشه (مثلا گروه‌بندی، فیلتر کردن، محاسبه).
    • تابع Map-Reduce: این یک روش قدیمی‌تر برای پردازش دسته‌ای داده‌هاست، اما پایپ‌لاین تجمیع معمولا کارایی بهتری داره.
    • متدهای تجمیع تک‌منظوره: برای کارهای ساده‌تر مثل شمارش یا پیدا کردن مقادیر متمایز.

    ۶. ذخیره‌سازی فایل با GridFS

    مانگو دی‌بی یک محدودیت داره: هر سند نمی‌تونه بزرگتر از ۱۶ مگابایت باشه. پس اگه بخوایم فایل‌های بزرگ مثل ویدیو یا عکس‌های باکیفیت رو ذخیره کنیم چی؟ برای این کار، مانگو دی‌بی یک راه‌حل داخلی به اسم GridFS داره. GridFS فایل‌های بزرگ رو به تکه‌های کوچکتر (chunks) تقسیم می‌کنه و هر تکه رو به عنوان یک سند مجزا در کالکشن‌های مخصوص ذخیره می‌کنه. اینطوری شما می‌تونید از تمام ویژگی‌های مانگو دی‌بی مثل تکثیر و شاردینگ برای فایل‌های بزرگ هم استفاده کنید.

    ابزارهای اصلی برای کار با مانگو دی‌بی

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

    • mongod: این کلمه مخفف MongoDB Daemon هست و در واقع سرور اصلی دیتابیس شماست. مثل موتور ماشین می‌مونه. تا وقتی این سرور رو اجرا نکنید، هیچ دیتابیسی وجود نداره که بهش وصل بشید. این سرور به صورت پیش‌فرض روی پورت 27017 منتظر اتصال کلاینت‌ها می‌مونه.
    • mongo و mongosh: اینها شل (Shell) یا کلاینت شما هستن. یعنی ابزاری که باهاش به سرور (mongod) وصل میشید و دستوراتتون رو اجرا می‌کنید؛ مثل کوئری زدن، اضافه کردن داده یا کارهای مدیریتی. mongo نسخه قدیمی‌تر این شل بود که از نسخه ۵.۰ به بعد مانگو دی‌بی، منسوخ شده. نسخه جدید و بهبودیافته اون mongosh نام داره که ویژگی‌هایی مثل هایلایت کردن دستورات، تاریخچه دستورات و لاگین بهتر رو ارائه میده. پس اگه می‌خواید با دیتابیس تعامل داشته باشید، باید از mongosh استفاده کنید.
    • mongos: این یکی کمی پیشرفته‌تره و وقتی کاربرد داره که شما از شاردینگ استفاده می‌کنید. mongos مخفف MongoDB Shard هست و مثل یک پراکسی یا روتر عمل می‌کنه. وقتی شما داده‌هاتون رو روی چندین سرور (shard) پخش کردید، کلاینت شما (مثلا mongosh) نمی‌دونه که داده مورد نظرش روی کدوم سرور قرار داره. mongos اینجا وارد عمل میشه. کلاینت شما به mongos وصل میشه و mongos وظیفه داره کوئری‌ها و درخواست‌های نوشتن رو به شارد یا شاردهای درست هدایت کنه.

    پس به طور خلاصه: شما mongod رو اجرا می‌کنید تا سرور دیتابیس راه بیفته. بعد با mongosh بهش وصل میشید تا با داده‌هاتون کار کنید. و اگه دیتابیس شما خیلی بزرگ و شارد شده باشه، mongos هم به عنوان یک واسط بین شما و شاردها عمل می‌کنه.

    مانگو دی‌بی اطلس (MongoDB Atlas): دیتابیس در ابرها

    راه انداختن و مدیریت یک دیتابیس، مخصوصا اگه بزرگ و توزیع‌شده باشه، کار ساده‌ای نیست. باید نگران نصب، پیکربندی، پشتیبان‌گیری، امنیت و خیلی چیزهای دیگه باشید. شرکت مانگو دی‌بی برای حل این مشکل، یک سرویس ابری به اسم MongoDB Atlas رو ارائه کرده.

    اطلس یک سرویس «دیتابیس به عنوان سرویس» (DBaaS) کاملا مدیریت شده است. یعنی شما دیگه لازم نیست خودتون سرور راه بندازید یا نگران نگهداری اون باشید. فقط با چند کلیک یک کلاستر (مجموعه‌ای از سرورها) مانگو دی‌بی روی پلتفرم‌های ابری معروفی مثل Amazon Web Services (AWS)، Google Cloud Platform و Microsoft Azure ایجاد می‌کنید و شرکت مانگو دی‌بی تمام کارهای مدیریتی رو براتون انجام میده. این سرویس امکاناتی مثل پشتیبان‌گیری خودکار، مانیتورینگ، امنیت پیشرفته و مقیاس‌پذیری راحت رو فراهم می‌کنه و به شما اجازه میده روی توسعه اپلیکیشن خودتون تمرکز کنید. جالبه بدونید که تا سال ۲۰۲۴، ۷۰ درصد درآمد شرکت مانگو دی‌بی از همین سرویس اطلس بوده.

    موارد استفاده مانگو دی‌بی: کجا به کار میاد؟

    با توجه به ویژگی‌هایی که گفتیم، مانگو دی‌بی برای طیف وسیعی از اپلیکیشن‌های مدرن مناسبه. بیایید چند تا از کاربردهای رایجش رو با هم مرور کنیم:

    • سیستم‌های مدیریت محتوا (CMS): به خاطر انعطاف‌پذیری بالا، مانگو دی‌بی برای ذخیره انواع محتوا مثل مقالات، وبلاگ‌ها و سایت‌های خبری که ساختارهای متنوعی دارن، عالیه.
    • اپلیکیشن‌های موبایل: مانگو دی‌بی به راحتی میتونه داده‌های سمت بک‌اند اپلیکیشن‌های iOS و اندروید رو ذخیره کنه و به توسعه‌دهنده‌ها اجازه میده اپلیکیشن‌هاشون رو به صورت یکپارچه مقیاس‌پذیر کنن.
    • تجارت الکترونیک (E-commerce): فروشگاه‌های آنلاین میتونن از مانگو دی‌بی برای مدیریت کاتالوگ محصولات، پروفایل کاربران، سبدهای خرید و تاریخچه تراکنش‌ها استفاده کنن.
    • اینترنت اشیا (IoT): دستگاه‌های IoT حجم عظیمی از داده‌های سنسورها رو تولید می‌کنن. مقیاس‌پذیری و انعطاف‌پذیری مانگو دی‌بی اون رو برای ذخیره و پردازش این داده‌ها ایده‌ال می‌کنه.
    • بازی‌های آنلاین: ذخیره پروفایل بازیکنان، امتیازات، دستاوردها و وضعیت بازی که ساختارهای پیچیده‌ای دارن، با مدل سند-گرای مانگو دی‌بی خیلی راحت‌تره.
    • تحلیل داده‌های آنی (Real-Time Analytics): توانایی مانگو دی‌بی در پردازش سریع داده‌ها، اون رو برای سیستم‌های مانیتورینگ، تشخیص تقلب و ارائه پیشنهادهای شخصی‌سازی شده مناسب می‌کنه.
    • شبکه‌های اجتماعی: مدیریت روابط پیچیده بین کاربران، محتوای تولید شده توسط کاربر و تعاملات زنده، با مانگو دی‌بی به خوبی امکان‌پذیره.
    • کاربردهای داده‌های بزرگ (Big Data): مانگو دی‌بی به خوبی با ابزارهای اکوسیستم داده‌های بزرگ مثل Apache Hadoop و Spark ادغام میشه و برای کارهایی مثل مدل‌سازی ریسک و تحلیل‌های پیش‌بینی‌کننده استفاده میشه.

    مقایسه مانگو دی‌بی با رقبای سنتی: MySQL

    برای اینکه جایگاه مانگو دی‌بی رو بهتر درک کنیم، خوبه که اون رو با MySQL به عنوان نماینده دیتابیس‌های رابطه‌ای مقایسه کنیم.

    ویژگیمانگو دی‌بی (MongoDB)مای‌اس‌کیو‌ال (MySQL)
    مدل دادهسند-گرا (Document-Oriented)، بدون شما (Schema-less)رابطه‌ای (Relational)، با شمای از پیش تعریف شده
    زبان کوئریMQL (زبانی شبیه JSON)SQL (زبان کوئری ساختاریافته)
    مقیاس‌پذیریافقی (Horizontal) با شاردینگ داخلیعمدتا عمودی (Vertical)، مقیاس‌پذیری افقی پیچیده‌تره
    موارد استفادهداده‌های بزرگ، اپلیکیشن‌های مدرن، داده‌های نیمه‌ساختاریافتهسیستم‌های تراکنشی، داده‌های با ساختار مشخص، جاهایی که یکپارچگی داده حیاتیه
    انعطاف‌پذیریبسیار بالا، تغییر ساختار داده آسان استکم، تغییر شما نیازمند فرآیندهای پیچیده است

    چه زمانی MySQL بهتره؟ وقتی یکپارچگی داده‌ها و ایزوله‌سازی (isolation) حرف اول رو میزنه، مثل سیستم‌های مدیریت تراکنش‌های مالی، MySQL به خاطر ساختار سفت و سختش انتخاب بهتریه.

    چه زمانی مانگو دی‌بی بهتره؟ وقتی سرعت، دسترسی بالا و توانایی کار با داده‌های متنوع و در حال تغییر اولویت داره، انعطاف‌پذیری و عملکرد بالای مانگو دی‌بی اون رو به گزینه بهتری تبدیل می‌کنه.

    تاریخچه و لایسنس: یک مسیر پر فراز و نشیب

    مانگو دی‌بی توسط شرکتی به اسم 10gen در سال ۲۰۰۷ شروع به توسعه پیدا کرد. این شرکت که بعدها در سال ۲۰۱۳ اسم خودش رو به MongoDB Inc. تغییر داد، در ابتدا قصد داشت یک محصول پلتفرم به عنوان سرویس (PaaS) بسازه که مانگو دی‌بی یکی از اجزای اون بود. اما در سال ۲۰۰۹، اونها مدل توسعه رو به سمت متن‌باز تغییر دادن. مانگو دی‌بی در تاریخ ۲۰ اکتبر ۲۰۱۷ با نماد MDB در بورس NASDAQ عرضه عمومی شد.

    یکی از بحث‌برانگیزترین اتفاقات در تاریخ مانگو دی‌بی، تغییر لایسنس اون بود. نسخه‌هایی که قبل از ۱۶ اکتبر ۲۰۱۸ منتشر شدن، تحت لایسنس AGPL بودن که یک لایسنس متن‌باز شناخته شده است. اما بعد از این تاریخ، شرکت مانگو دی‌بی لایسنس نرم‌افزار سرور خودش رو به Server Side Public License (SSPL) تغییر داد.

    این لایسنس جدید که توسط خود مانگو دی‌بی نوشته شده، شبیه به لایسنس‌های متن‌باز هست اما یک شرط مهم داره: اگه شما نرم‌افزار مانگو دی‌بی رو به عنوان یک «سرویس» عمومی ارائه بدید، باید کل سورس کد سرویس خودتون رو هم تحت همین لایسنس SSPL منتشر کنید. این تغییر برای جلوگیری از این بود که شرکت‌های بزرگ ارائه‌دهنده خدمات ابری، از مانگو دی‌بی به صورت تجاری استفاده کنن بدون اینکه به جامعه اون کمک کنن.

    این تغییر باعث شد که بنیاد نرم‌افزار متن‌باز (OSI) اعلام کنه که SSPL یک لایسنس متن‌باز نیست. در نتیجه، توزیع‌های لینوکسی معروفی مثل Debian، Fedora و Red Hat Enterprise Linux، مانگو دی‌بی رو از مخازن رسمی خودشون حذف کردن.

    انتقادات و چالش‌ها: نگاهی بی‌طرفانه

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

    • امنیت: در نسخه‌های قدیمی‌تر، تنظیمات پیش‌فرض امنیتی مانگو دی‌بی ضعیف بود و به هر کسی اجازه دسترسی کامل به دیتابیس رو می‌داد. این موضوع باعث شد که هکرها به ده‌ها هزار دیتابیس حمله کنن، اطلاعات رو سرقت کنن یا برای پس دادن اونها باج بخوان. البته از نسخه ۲.۶ به بعد، این مشکل حل شد و به صورت پیش‌فرض، دیتابیس فقط به اتصالات از خود ماشین (localhost) اجازه دسترسی میده.
    • عدم وجود JOINهای پیچیده: در دیتابیس‌های رابطه‌ای، شما می‌تونید با دستور JOIN داده‌ها رو از جدول‌های مختلف به هم وصل کنید. مانگو دی‌بی به صورت ذاتی از JOIN به اون شکل پشتیبانی نمی‌کنه. به جای اون، شما باید از طریق جاسازی اسناد (embedding) یا ارجاع (referencing) روابط رو مدیریت کنید. این موضوع گاهی برای کسانی که از دنیای SQL میان، چالش‌برانگیزه و باعث میشه در اپلیکیشن‌های خیلی پیچیده که روابط زیادی دارن، برخی به سمت SQL برگردن.
    • مصرف بالای حافظه: مانگو دی‌بی برای افزایش کارایی، از حافظه رم به مقدار زیادی استفاده می‌کنه که میتونه هزینه‌های سخت‌افزاری رو بالا ببره.
    • انتقادات فنی و یکپارچگی داده: در گذشته، گزارش‌هایی مثل گزارش معروف Jepsen (یک شرکت تحقیقاتی در زمینه ایمنی سیستم‌های توزیع‌شده) مشکلاتی رو در مورد یکپارچگی داده‌ها در سناریوهای خاصی از خرابی شبکه در مانگو دی‌بی پیدا کرده بود. این گزارش‌ها نشون می‌داد که در شرایط خاص، ممکنه دیتابیس داده‌های قدیمی (stale reads) برگردونه یا حتی داده‌هایی که تایید شدن رو به عقب برگردونه (rollback). شرکت مانگو دی‌بی در نسخه‌های بعدی (مثل نسخه ۳.۴ و بالاتر) بسیاری از این مشکلات رو برطرف کرد و ادعا کرد که تست‌های Jepsen رو با موفقیت پشت سر گذاشته. اما گزارش‌های جدیدتر Jepsen در مورد نسخه‌های جدیدتر مثل ۴.۲.۶، همچنان به برخی مشکلات و پیچیدگی‌ها در تضمین کامل یکپارچگی داده‌ها در تراکنش‌ها اشاره داشت. البته این مشکلات هم در پچ‌های بعدی مورد توجه قرار گرفتن و در نسخه ۵.۰، پیش‌فرض‌های مربوط به تایید نوشتن داده (write concern) برای افزایش ایمنی، تقویت شدن.

    این انتقادات به این معنی نیستن که مانگو دی‌بی ابزار بدیه، بلکه نشون میدن که مثل هر ابزار قدرتمند دیگه‌ای، باید با آگاهی کامل از نقاط قوت و ضعفش از اون استفاده کرد.

    پرسش و پاسخ‌های متداول (FAQ)

    حالا که یک دید کلی و جامع از مانگو دی‌بی پیدا کردیم، بیایید به چند تا سوال رایج که ممکنه تو ذهن شما شکل گرفته باشه جواب بدیم.

    • سوال ۱: پس مانگو دی‌بی فقط برای داده‌های «بدون ساختار» خوبه؟

      نه لزوما. اصطلاح بهتر «داده‌های نیمه‌ساختاریافته» یا داده‌هایی هست که ساختار ثابتی ندارن. مانگو دی‌بی برای هر اپلیکیشنی که داده‌هاش به راحتی در قالب جدول‌های سفت و سخت جا نمیگیرن یا ساختارشون در طول زمان زیاد تغییر می‌کنه، عالیه. حتی برای داده‌های ساختاریافته هم میشه ازش استفاده کرد، اما انعطاف‌پذیریش در کار با داده‌های متنوع نقطه قوت اصلیشه.

    • سوال ۲: فرق بین mongo و mongosh دقیقا چی بود؟

      هر دو ابزارهایی برای اتصال به سرور مانگو دی‌بی و اجرای دستورات هستن. mongo نسخه قدیمی‌تره که دیگه توسعه داده نمیشه. mongosh نسخه جدید، مدرن و پیشنهادی هست که امکانات بهتری مثل رنگی بودن دستورات و تاریخچه بهتر رو ارائه میده. همیشه سعی کنید از mongosh استفاده کنید.

    • سوال ۳: این «کرسر» (Cursor) که گاهی در موردش صحبت میشه چیه؟

      وقتی شما یک کوئری find در مانگو دی‌بی اجرا می‌کنید، دیتابیس تمام نتایج رو یک‌جا برای شما ارسال نمی‌کنه، چون ممکنه نتایج خیلی زیاد باشن و حافظه زیادی مصرف کنن. به جای اون، یک کرسر (Cursor) برمی‌گردونه. کرسر مثل یک «اشاره‌گر» به مجموعه‌ی نتایج روی سرور عمل می‌کنه. شما با استفاده از این کرسر می‌تونید نتایج رو یکی یکی یا به صورت دسته‌ای (batch) از سرور بگیرید. متدهایی مثل hasNext() (که چک می‌کنه آیا نتیجه دیگه‌ای وجود داره) و next() (که نتیجه بعدی رو برمی‌گردونه) روی همین کرسر کار می‌کنن.

    • سوال ۴: اگه اینقدر انعطاف‌پذیر و خوبه، چه زمانی نباید از مانگو دی‌بی استفاده کنم؟

      مانگو دی‌بی برای همه کارها بهترین راه‌حل نیست. اگه اپلیکیشن شما داده‌های بسیار رابطه‌ای داره و نیاز به JOINهای پیچیده بین چندین جدول دارید (مثلا یک سیستم بانکی پیچیده)، و یکپارچگی و ثبات داده‌ها (ACID properties) در سطح تراکنش‌های چند جدولی برای شما حیاتی‌تر از هر چیز دیگه‌ای هست، احتمالا یک دیتابیس رابطه‌ای مثل MySQL یا PostgreSQL انتخاب بهتری باشه.

    • سوال ۵: جریان این لایسنس SSPL چیه؟ یعنی مانگو دی‌بی دیگه متن‌باز نیست؟

      از نظر فنی، سورس کد مانگو دی‌بی همچنان در دسترسه (source-available)، اما لایسنس SSPL توسط بنیاد متن‌باز به عنوان یک لایسنس «متن‌باز» واقعی تایید نشده. دلیلش هم محدودیتی هست که برای ارائه‌دهندگان خدمات ابری ایجاد می‌کنه. برای یک توسعه‌دهنده معمولی که از مانگو دی‌بی در اپلیکیشن خودش استفاده می‌کنه، این موضوع معمولا تفاوت خاصی ایجاد نمی‌کنه. اما اگه قصد دارید خود مانگو دی‌بی رو به عنوان یک سرویس تجاری به دیگران بفروشید، باید شرایط این لایسنس رو به دقت بررسی کنید. نسخه Community مانگو دی‌بی همچنان برای استفاده رایگانه.

    منابع

    • [2] mongod, mongo, mongosh, mongos, what now? – Helen Scott
    • [4] MongoDB – Wikipedia
    • [6] What is a Cursor in MongoDB? – Stack Overflow
    • [8] MongoDB – Working and Features – GeeksforGeeks
    • [10] What is MongoDB? Features and how it works – TechTarget Definition
    • [1] MongoDB: The World’s Leading Modern Database | MongoDB
    • [3] ELI5: What is MongoDB and what is used for? : r/mongodb
    • [5] What Is MongoDB? | MongoDB
    • [7] When should I actually use MongoDB? : r/webdev
    • [9] What Is MongoDB? | IBM
  • امنیت ایمیل؛ راهنمای محافظت از ارتباطات دیجیتال شما

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

    دشمنان نامرئی: با انواع تهدیدهای ایمیلی آشنا بشیم

    اول از همه، باید بدونیم که وقتی از «حمله ایمیلی» حرف می‌زنیم، دقیقا منظورمون چیه. این حمله‌ها شکل‌های مختلفی دارن و هر کدوم یه هدف خاص رو دنبال می‌کنن. مجرم‌های سایبری همیشه دنبال راه‌های جدیدی برای گول زدن ما هستن. بیایید چندتا از معروف‌ترین این روش‌ها رو با هم بررسی کنیم.

    فیشینگ (Phishing): طعمه‌ای برای شکار اطلاعات شما

    یکی از رایج‌ترین و شناخته‌شده‌ترین تهدیدها، فیشینگ هست. اسمش از کلمه انگلیسی «Fishing» به معنی ماهیگیری میاد، چون کاری که هکر می‌کنه دقیقا مثل ماهیگیریه. یه طعمه جذاب یا فوری جلوی شما می‌ندازه تا شما رو به دام بندازه و اطلاعات حساس‌تون رو بدزده. این اطلاعات می‌تونه هر چیزی باشه، از نام کاربری و رمز عبور گرفته تا اطلاعات حساب بانکی شما.

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

    مهاجم‌های فیشینگ خودشون رو جای یه منبع معتبر جا می‌زنن. مثلا ممکنه ایمیلی دریافت کنین که به نظر میاد از طرف بانک شما، یه فروشگاه آنلاین معروف یا حتی شبکه اجتماعی که توش عضو هستین، فرستاده شده. این ایمیل‌ها معمولا با یه درخواست وسوسه‌انگیز یا یه هشدار فوری، شما رو ترغیب می‌کنن که کاری رو انجام بدین. مثلا ممکنه بگن: «حساب شما در خطر است، برای تایید هویت فورا روی این لینک کلیک کنید».

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

    فیشینگ خودش انواع مختلفی داره که روز به روز هم پیچیده‌تر می‌شن:

    • فیشینگ نیزه‌ای (Spear Phishing): این نوع فیشینگ مثل یه حمله تک‌تیراندازه. به جای اینکه یه ایمیل عمومی برای هزاران نفر فرستاده بشه، مهاجم یه فرد یا یه سازمان خاص رو هدف قرار می‌ده. اونها قبل از حمله، حسابی در مورد هدف تحقیق می‌کنن و ایمیل رو طوری طراحی می‌کنن که کاملا شخصی و معتبر به نظر برسه. مثلا ممکنه به اسم یکی از همکاران یا مدیر شما ایمیل بزنن و درخواستی بکنن که خیلی عادی به نظر میاد.
    • نهنگ‌گیری (Whaling): این مدل، نسخه سنگین‌تر فیشینگ نیزه‌ایه. اینجا هدف، افراد خیلی مهم و رده‌بالای یه سازمانه، مثل مدیرعامل (CEO) یا مدیر مالی. چون این افراد دسترسی‌های خیلی مهمی دارن، موفقیت تو این نوع حمله می‌تونه خسارت‌های وحشتناکی به بار بیاره.
    • ویشینگ (Vishing): این کلمه ترکیبی از «Voice» و «Phishing» هست و به فیشینگ از طریق تماس صوتی اشاره داره.
    • کوئیشینگ (Quishing): این یکی از روش‌های جدیدتره که از کدهای QR استفاده می‌کنه. ایمیل حاوی یه تصویر از کد QR هست. مهاجم از شما می‌خواد که این کد رو با دوربین موبایل‌تون اسکن کنین. به محض اسکن کردن، شما به یه سایت فیشینگ هدایت می‌شین. نکته خطرناک اینجاست که این کار معمولا با گوشی شخصی انجام می‌شه که احتمالا مثل کامپیوترهای شرکت، تحت نظارت امنیتی نیست و اینطوری مهاجم می‌تونه کنترل‌های امنیتی سازمان رو دور بزنه.

    جعل دامنه ایمیل (Email Domain Spoofing): وقتی ایمیل از یه آدرس آشنا میاد، اما فرستنده غریبه است

    یکی از تکنیک‌های کلیدی که به موفقیت حمله‌های فیشینگ و بقیه کلاهبرداری‌ها کمک می‌کنه، جعل دامنه ایمیل هست. این تکنیک به مهاجم اجازه می‌ده یه ایمیل با آدرس فرستنده جعلی بفرسته. یعنی ایمیلی که شما دریافت می‌کنین، به نظر میاد از یه منبع معتبر و قانونی فرستاده شده، در حالی که اینطور نیست.

    بذارین یه مثال بزنم. فرض کنین یه هکر به اسم «چاک» می‌خواد دوستش «باب» رو گول بزنه. چاک می‌تونه یه ایمیل از طرف دامنه «trustworthy-bank.com@» برای باب بفرسته، در حالی که چاک اصلا صاحب این دامنه نیست و هیچ ربطی به اون بانک نداره. این کار باعث می‌شه باب به ایمیل اعتماد کنه و کاری که ازش خواسته شده رو انجام بده.

    بدافزار (Malware): مهمان ناخوانده‌ای در پیوست ایمیل

    پیوست یا اتچمنت ایمیل، یکی از قابلیت‌های خیلی کاربردیه، اما متاسفانه مهاجم‌ها از همین قابلیت برای فرستادن محتوای مخرب، از جمله بدافزار (Malware)، به قربانی‌هاشون استفاده می‌کنن. بدافزار یه اصطلاح کلی برای هر نوع نرم‌افزار مخربه که هدفش آسیب زدن یا مختل کردن کامپیوترهاست. انواع مختلفی داره مثل ویروس‌ها، کرم‌ها، جاسوس‌افزارها و باج‌افزارها.

    یکی از راه‌های ساده اینه که مهاجم یه فایل اجرایی با پسوند «.exe» رو مستقیما پیوست کنه و گیرنده رو گول بزنه که اون رو باز کنه. اما یه روش خیلی رایج‌تر و موذیانه‌تر، مخفی کردن کدهای مخرب داخل فایل‌های به ظاهر بی‌خطره. مثلا یه فایل PDF یا یه سند Word. هر دوی این فایل‌ها می‌تونن حاوی کدهایی مثل ماکرو (Macro) باشن. مهاجم‌ها از این قابلیت برای اجرای یه دستور مخرب روی کامپیوتر قربانی استفاده می‌کنن. مثلا به محض باز شدن فایل، یه بدافزار دیگه دانلود و اجرا می‌شه.

    جالبه بدونین که ۹۴ درصد از بدافزارها از طریق ایمیل منتقل می‌شن. خیلی از آلودگی‌های باج‌افزار (Ransomware) در سال‌های اخیر با یه پیوست ایمیل شروع شدن. باج‌افزار نوعی بدافزاره که فایل‌های شما رو قفل (رمزگذاری) می‌کنه و برای باز کردنشون از شما باج می‌خواد.

    • باج‌افزار Ryuk: معمولا از طریق یه پیوست Word که حاوی ماکروی مخربه، پخش می‌شه.
    • باج‌افزار Petya: این یکی از طریق یه ایمیل فیشینگ که خودش رو یه متقاضی کار جا می‌زنه، منتشر می‌شه و یه لینک به یه فایل Dropbox آلوده می‌ده.
    • بدافزار Emotet: این بدافزار که اولش یه تروجان بانکی بود، تکامل پیدا کرد و حالا از طریق پیوست‌های ایمیل آلوده، بدافزارهای دیگه‌ای رو هم پخش می‌کنه.

    اسپم (Spam): پیام‌های ناخواسته و مزاحم

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

    فرستنده‌های اسپم (Spammers) به مرور زمان «اعتبار فرستنده ایمیل» بدی پیدا می‌کنن. یعنی اگه درصد زیادی از ایمیل‌های یه فرستنده باز نشه یا توسط گیرنده‌ها به عنوان اسپم علامت‌گذاری بشه، یا اگه ایمیل‌هاش زیاد برگشت بخوره، سرویس‌های ایمیل اعتبار اون فرستنده رو کم می‌کنن. به همین دلیله که اسپمرها همیشه انگیزه دارن که کنترل حساب‌های کاربری دیگه رو به دست بگیرن، فضای آدرس IP بدزدن یا دامنه‌ها رو جعل کنن تا بتونن اسپم‌هایی بفرستن که به راحتی شناسایی نشن.

    تسخیر حساب کاربری (Account Takeover): وقتی خونه شما دست دزد می‌افته

    تصور کنین یکی کلید خونه شما رو بدزده و وارد بشه. تسخیر حساب کاربری ایمیل هم دقیقا همینه. مهاجم کنترل ایمیل شما رو به دست می‌گیره و می‌تونه ازش برای کارهای مختلفی استفاده کنه: فرستادن اسپم، شروع حمله‌های فیشینگ، پخش کردن بدافزار، دزدیدن لیست مخاطبین شما یا حتی استفاده از ایمیل شما برای دزدیدن بقیه حساب‌های آنلاینتون (مثلا با زدن دکمه «فراموشی رمز عبور» تو سایت‌های دیگه).

    مهاجم‌ها برای نفوذ به یه حساب ایمیل از روش‌های مختلفی استفاده می‌کنن:

    • حملات بروت فورس (Brute force): ابزارهای خودکار به طور سیستماتیک رمزهای عبور مختلف رو امتحان می‌کنن تا بالاخره رمز درست رو پیدا کنن. این روش روی حساب‌هایی با رمزهای ضعیف یا رایج بهتر جواب می‌ده.
    • اسپری کردن رمز عبور (Password spraying): این روش شبیه بروت فورسه، اما برعکس عمل می‌کنه. به جای امتحان کردن هزاران رمز روی یک حساب، مهاجم تعداد کمی از رمزهای عبور خیلی رایج (مثلا Password123) رو روی تعداد زیادی از حساب‌ها امتحان می‌کنه تا شناسایی نشه.
    • پر کردن اعتبارنامه (Credential stuffing): مهاجم‌ها از نام‌های کاربری و رمزهای عبوری که قبلا از نشت اطلاعاتی سایت‌های دیگه به دست آوردن، استفاده می‌کنن. اونها روی این حساب می‌کنن که خیلی از کاربرها از یه رمز عبور برای چندتا سایت مختلف استفاده می‌کنن.
    • بدافزار مبتنی بر سرقت اعتبارنامه: نرم‌افزارهای مخربی که اطلاعات ذخیره شده از مرورگرها یا مدیران رمز عبور رو می‌دزدن یا کلیدهایی که شما موقع تایپ رمزتون فشار می‌دین رو ضبط می‌کنن (Keylogger).
    • فیشینگ و مهندسی اجتماعی: همونطور که گفتیم، کاربر رو گول می‌زنن تا خودش اطلاعاتش رو لو بده.

    مهندسی اجتماعی (Social Engineering): بازی با روان شما

    این تکنیک بیشتر از اینکه به فناوری تکیه کنه، روی روانشناسی انسان حساب می‌کنه. مهاجم‌ها با استفاده از ترفندهای روانشناسی، شما رو فریب می‌دن تا اطلاعات محرمانه رو فاش کنین یا کاری رو انجام بدین که امنیت رو به خطر می‌ندازه. اونها ممکنه خودشون رو جای یه فرد قابل اعتماد یا یه مقام مسئول جا بزنن و با شیرین‌زبونی یا ترسوندن شما، به هدفشون برسن. این مثل یه کلاهبرداری سایبریه.

    و چند تهدید دیگر…

    • حمله مرد میانی (Man-in-the-Middle): تصور کنین یه نفر یواشکی داره به مکالمه شما گوش می‌ده. تو این حمله، مهاجم ارتباط بین دو نفر رو قطع می‌کنه و می‌تونه پیام‌ها رو بخونه، تغییر بده یا پیام‌های جدیدی به مکالمه تزریق کنه.
    • نشت داده (Data Exfiltration): دزدهای حرفه‌ای به سیستم ایمیل یه سازمان نفوذ می‌کنن و داده‌های حساس مثل اسرار تجاری، اطلاعات مالی یا اطلاعات شخصی کارمندان و مشتریان رو می‌دزدن.
    • حمله منع سرویس (Denial of Service): مهاجم‌ها با فرستادن حجم عظیمی از ایمیل‌ها، سرورهای ایمیل رو غرق می‌کنن. سرورها زیر این فشار از کار می‌افتن و ارتباطات ایمیلی مختل می‌شه.

    سپر دفاعی ما: چطور از ایمیل‌هامون محافظت کنیم؟

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

    رمزگذاری (Encryption): نامه شما در یک پاکت مهر و موم شده

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

    اینجاست که رمزگذاری (Encryption) وارد می‌شه. رمزگذاری مثل گذاشتن اون کارت پستال توی یه پاکت محکم و مهر و موم شده است. این فرآیند، داده‌های شما رو به هم می‌ریزه و به یه زبان کد شده تبدیل می‌کنه، طوری که فقط طرف‌های مجاز (یعنی شما و گیرنده) می‌تونن اون رو باز و رمزگشایی کنن.

    اکثر روش‌های رمزگذاری ایمیل از رمزنگاری کلید عمومی استفاده می‌کنن. بعضی از این روش‌ها حتی سر به سر (end-to-end) هستن، یعنی حتی خود شرکت سرویس‌دهنده ایمیل هم نمی‌تونه محتوای پیام‌های شما رو بخونه.

    انواع مختلفی از پروتکل‌های رمزگذاری وجود داره:

    • PGP (Pretty Good Privacy): این یه پروتکل رمزگذاریه که به طور خاص برای ایمیل طراحی شده و چون یه استاندارد بازه، هر کسی می‌تونه ازش استفاده کنه.
    • S/MIME (Secure Multi-purpose Internet Mail Extension): این هم مثل PGP برای امن کردن محتوای ایمیل طراحی شده، اما بیشتر در محیط‌های سازمانی و شرکتی استفاده می‌شه.
    • TLS (Transport Layer Security): این پروتکل برای امن کردن کل ارتباطات شبکه استفاده می‌شه، نه فقط ایمیل. وب‌گردی، انتقال فایل و ایمیل همگی می‌تونن از TLS برای محافظت از داده‌ها در حین انتقال بین دو دستگاه استفاده کنن.

    نگهبانان دامنه: SPF، DKIM و DMARC

    یادتونه در مورد جعل دامنه صحبت کردیم؟ خب، برای مقابله با این مشکل، سه تا رکورد DNS خاص وجود داره که مثل سه تا نگهبان برای دامنه شما عمل می‌کنن و مطمئن می‌شن ایمیل‌ها واقعا از جایی که ادعا می‌کنن، اومدن. DNS یا «سیستم نام دامنه» مثل دفترچه تلفن اینترنته و رکوردهای عمومی یه دامنه رو ذخیره می‌کنه.

    این سه نگهبان عبارتند از:

    • SPF (Sender Policy Framework): این رکورد مثل یه لیست مهمان‌ها عمل می‌کنه. صاحب دامنه یه لیست از آدرس‌های IP مجاز که حق دارن از طرف اون دامنه ایمیل بفرستن رو تو رکورد DNS خودش اعلام می‌کنه. وقتی یه ایمیل دریافت می‌شه، سرور گیرنده چک می‌کنه که آیا IP فرستنده تو این لیست مجاز هست یا نه.
    • DKIM (DomainKeys Identified Mail): این رکورد از امضای دیجیتال برای تایید اعتبار ایمیل استفاده می‌کنه. صاحب دامنه کلیدهای عمومی DKIM رو تو رکورد DNS خودش قرار می‌ده و ایمیل‌های خروجی رو به صورت دیجیتالی امضا می‌کنه. گیرنده می‌تونه با استفاده از اون کلید عمومی، امضا رو تایید کنه و مطمئن بشه که ایمیل در مسیر دستکاری نشده.
    • DMARC (Domain-based Message Authentication, Reporting, and Conformance): این رکورد مثل یه مدیر یا ناظر عمل می‌کنه. DMARC به صاحب دامنه اجازه می‌ده که مشخص کنه اگه یه ایمیل در آزمون‌های SPF یا DKIM مردود شد، سرور گیرنده باید باهاش چیکار کنه (مثلا ردش کنه، قرینه‌اش کنه یا فقط گزارش بده). این پروتکل از دو پروتکل قبلی استفاده می‌کنه تا از جعل آدرس ایمیل جلوگیری کنه.

    سرویس‌های ایمیل معتبر، ایمیل‌های دریافتی رو با این سه رکورد چک می‌کنن تا ببینن آیا قانونی هستن یا نه.

    ابزارها و راهکارهای فنی: ارتش دیجیتال شما

    علاوه بر موارد بالا، سازمان‌ها از مجموعه‌ای از ابزارها و خدمات برای تقویت امنیت ایمیل‌شون استفاده می‌کنن:

    • دروازه‌های امن ایمیل (Secure Email Gateways – SEG): اینها مثل یه گارد امنیتی در ورودی شبکه شرکت مستقر می‌شن و ایمیل‌های ورودی و خروجی رو بازرسی و فیلتر می‌کنن. اونها از معیارهای مختلفی مثل امضای بدافزارها، فیلتر کردن URLهای مشکوک و الگوهای فیشینگ برای شناسایی و مسدود کردن ایمیل‌های مخرب استفاده می‌کنن.
    • امنیت ایمیل ابری (Cloud Email Security): سرویس‌های ایمیل ابری مثل Google Workspace یا Microsoft 365 معمولا ویژگی‌های امنیتی داخلی دارن. مثلا ممکنه حفاظت در برابر تهدید، فیلتر اسپم و رمزگذاری ارائه بدن. اما با توجه به اینکه آفیس ۳۶۵ به یه هدف جذاب برای مجرم‌های سایبری تبدیل شده، خیلی از شرکت‌ها دنبال لایه‌های امنیتی اضافی هستن.
    • محافظت از داده‌های ایمیل (Email Data Protection – EDP): این راهکارها برای جلوگیری از نشت داده‌های حساس و اطمینان از رعایت قوانین حفاظت از داده طراحی شدن. EDP معمولا از ترکیب رمزگذاری، DLP و SEG استفاده می‌کنه.
    • جلوگیری از از دست رفتن داده (Data Loss Prevention – DLP): این سیستم‌ها محتوای ایمیل‌های خروجی رو بررسی می‌کنن و اگه اطلاعات حساسی (مثل شماره کارت اعتباری یا اطلاعات شخصی) پیدا کنن، جلوی ارسال اون رو می‌گیرن یا اون بخش از متن رو حذف می‌کنن.
    • راهکارهای مبتنی بر API: این راهکارها به جای اینکه در مسیر ایمیل قرار بگیرن، از طریق API به سرویس ایمیل شما متصل می‌شن و ایمیل‌ها رو برای محتوای مخرب بازرسی می‌کنن.
    • هوش مصنوعی (AI) در امنیت ایمیل: هوش مصنوعی داره به یه ابزار قدرتمند در این زمینه تبدیل می‌شه. مدل‌های زبان بزرگ (LLM) می‌تونن محتوای یه ایمیل رو بخونن و تحلیل کنن و علائم هشداردهنده فیشینگ مثل تلاش برای ایجاد حس فوریت یا دستکاری روانشناسی رو تشخیص بدن. همچنین AI می‌تونه الگوهای ترافیک ایمیل رو تحلیل کنه و هرگونه رفتار غیرعادی که ممکنه نشونه یه حمله باشه رو شناسایی کنه.

    شما، اولین خط دفاع: بهترین روش‌های امنیتی برای کاربران

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

    • یک رمز عبور قوی بسازید: رمز عبور ضعیف، تکراری یا لو رفته، شایع‌ترین دلیل هک شدن حساب‌های ایمیله. یه رمز عبور قوی باید حداقل ۱۲ کاراکتر طول داشته باشه و ترکیبی از حروف بزرگ و کوچک، اعداد و کاراکترهای خاص (مثل @، #، $) باشه.
    • احراز هویت دو عاملی (MFA) را فعال کنید: این کار یه لایه امنیتی اضافه به حساب شما اضافه می‌کنه. حتی اگه یه هکر رمز عبور شما رو به دست بیاره، برای ورود به حساب به یه عامل دوم هم احتیاج داره، مثلا یه کدی که به گوشی شما فرستاده می‌شه.
    • مراقب کلاهبرداری‌های فیشینگ باشید: همیشه به ایمیل‌هایی که اطلاعات شخصی از شما می‌خوان یا لینک‌های مشکوک دارن، با دیده شک نگاه کنین. قبل از کلیک کردن، ماوس رو روی لینک نگه دارین تا ببینین واقعا شما رو به کجا می‌بره.
    • نرم‌افزارهای خود را به‌روز نگه دارید: همیشه مطمئن بشین که سیستم عامل و برنامه ایمیل شما آخرین آپدیت‌های امنیتی رو دریافت کرده. هکرها از آسیب‌پذیری‌های نرم‌افزارهای قدیمی سوءاستفاده می‌کنن.
    • یک ارائه‌دهنده خدمات ایمیل معتبر انتخاب کنید: دنبال سرویسی باشین که از رمزگذاری و اقدامات امنیتی دیگه برای محافظت از داده‌های شما استفاده می‌کنه.
    • در آموزش‌های آگاهی‌بخشی امنیتی شرکت کنید: خیلی از سازمان‌ها برای کارمندانشون دوره‌های آموزشی برگزار می‌کنن تا یاد بگیرن چطور تهدیدها رو شناسایی کنن. این آموزش‌ها خیلی مهمن و به شما کمک می‌کنن که به جای اینکه یه نقطه ضعف باشین، به یه نقطه قوت در امنیت سازمان تبدیل بشین.
    • از VPN استفاده کنید: استفاده از VPN می‌تونه با رمزگذاری اتصال اینترنت شما و مخفی کردن آدرس IP، به محافظت از ایمیل‌هاتون کمک کنه و کار رو برای هکرها سخت‌تر کنه.
    • از حساب‌های خود خارج شوید (Log out): وقتی کارتون تموم شد، مخصوصا روی دستگاه‌های اشتراکی، از حساب ایمیل‌تون خارج بشین. فعال کردن خروج خودکار بعد از یه مدت بی‌فعالیتی هم ایده خوبیه.

    سیاست‌های امنیتی ایمیل: قوانین بازی در یک سازمان

    برای اینکه همه این موارد به درستی اجرا بشن، سازمان‌ها باید یه سری قوانین و استانداردها به اسم «سیاست امنیتی ایمیل» داشته باشن. این سیاست مثل یه دفترچه راهنماست که به همه میگه چطور باید از ایمیل به صورت امن استفاده کنن. یه سیاست خوب باید شامل این موارد باشه:

    • استفاده مناسب: مشخص می‌کنه چه کسانی، برای چه اهدافی و چطور می‌تونن از ایمیل سازمانی استفاده کنن.
    • رمز عبور و احراز هویت: قوانین مربوط به پیچیدگی رمز عبور و اجباری بودن MFA رو تعیین می‌کنه.
    • رمزگذاری: مشخص می‌کنه چه نوع اطلاعات حساسی باید حتما قبل از ارسال، رمزگذاری بشن.
    • محافظت در برابر ویروس: رویه‌های مربوط به اسکن ایمیل‌ها و پیوست‌ها رو مشخص می‌کنه.
    • نگهداری و حذف: تعیین می‌کنه ایمیل‌ها و پیوست‌هاشون تا چه مدتی باید نگهداری بشن و کی باید حذف بشن.
    • آموزش: همه کارمندان رو ملزم به گذروندن دوره‌های آموزشی امنیت ایمیل می‌کنه.
    • گزارش‌دهی حوادث: رویه‌های مربوط به گزارش و بررسی مشکلات امنیتی ایمیل رو مشخص می‌کنه.
    • نظارت: رویه‌های نظارت بر ارتباطات ایمیلی برای اطمینان از رعایت سیاست‌ها رو تعیین می‌کنه.
    • انطباق با مقررات: اطمینان می‌ده که سازمان با قوانین حفاظت از داده مثل GDPR و HIPAA مطابقت داره.
    • اجرا: عواقب نقض سیاست امنیتی ایمیل، از اقدامات انضباطی تا پیگردهای قانونی رو مشخص می‌کنه.

    یه مثال کاربردی: حالت محرمانه در جیمیل

    برای اینکه این مفاهیم رو بهتر درک کنین، بیایید یه نگاهی به یکی از ویژگی‌های امنیتی جیمیل به اسم «حالت محرمانه» (Confidential Mode) بندازیم. این ویژگی به شما اجازه می‌ده ایمیل‌هایی بفرستین که امنیت بیشتری دارن.

    • قدم اول: وقتی دارین یه ایمیل جدید می‌نویسین، در پایین پنجره روی آیکون قفل و ساعت کلیک کنین تا حالت محرمانه فعال بشه.
    • قدم دوم: حالا می‌تونین یه تاریخ انقضا برای ایمیل‌تون تعیین کنین. بعد از این تاریخ، گیرنده دیگه نمی‌تونه ایمیل رو ببینه. همچنین می‌تونین یه رمز عبور هم براش بذارین.
      • اگه گزینه «بدون رمز پیامکی» رو انتخاب کنین، کسانی که از اپ جیمیل استفاده می‌کنن، می‌تونن مستقیم ایمیل رو باز کنن و بقیه یه ایمیل حاوی رمز عبور دریافت می‌کنن.
      • اگه گزینه «رمز پیامکی» رو انتخاب کنین، گیرنده یه رمز عبور از طریق پیامک دریافت می‌کنه و شما باید شماره تلفن گیرنده رو وارد کنین.
    • قدم سوم: روی دکمه ذخیره کلیک کنین.
    • قدم چهارم: ایمیل‌تون رو بنویسین و ارسال کنین.

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


    جلسه پرسش و پاسخ پروفسور

    خب، حالا که یه دور کامل با دنیای امنیت ایمیل آشنا شدیم، وقتشه که به چندتا از سوال‌های رایج شما جواب بدم.

    سوال: چرا امنیت ایمیل اینقدر مهمه؟

    پاسخ: چون ایمیل یکی از اصلی‌ترین ابزارهای ارتباطی ماست و اغلب حاوی اطلاعات حساسه. از طرفی، ایمیل یکی از محبوب‌ترین اهداف برای مجرم‌های سایبریه. طبق گزارش‌ها، ۹۴ درصد حمله‌های فیشینگ از ایمیل شروع می‌شن و همینطور ۹۴ درصد بدافزارها از طریق ایمیل منتقل می‌شن. یه حمله ایمیلی موفق می‌تونه منجر به خسارت‌های مالی سنگین (مثل حملات BEC که بین سال‌های ۲۰۱۳ تا ۲۰۲۲ حدود ۵۰ میلیارد دلار خسارت زدن)، از دست رفتن داده‌های حیاتی، آسیب به اعتبار برند و مشکلات قانونی بشه. پس محافظت از ایمیل، یعنی محافظت از کل کسب و کار و زندگی دیجیتال ما.

    سوال: رایج‌ترین تهدیدهای ایمیلی چی هستن؟

    پاسخ: تهدیدها زیادن، اما چندتا از شایع‌ترین‌هاشون اینها هستن: فیشینگ (و انواعش مثل فیشینگ نیزه‌ای)، بدافزار و باج‌افزار (که معمولا از طریق پیوست‌ها میان)، اسپم، جعل ایمیل، تسخیر حساب کاربری و مهندسی اجتماعی.

    سوال: «ایمیل رمزگذاری شده» یعنی چی؟

    پاسخ: یعنی محتوای ایمیل شما از متن ساده و قابل خوندن، به یه متن به هم ریخته و کد شده تبدیل می‌شه. فقط گیرنده‌ای که «کلید» درست رو داشته باشه، می‌تونه این کد رو باز کنه و متن اصلی رو بخونه. این کار مثل گذاشتن نامه توی یه پاکت مهر و موم شده است و جلوی خوندن اطلاعات شما توسط افراد غیرمجاز در مسیر انتقال رو می‌گیره.

    سوال: چطوری می‌تونم امنیت ایمیلم رو بیشتر کنم؟ پنج تا راهکار اصلی بگین.

    پاسخ: حتما. این پنج کار رو همیشه انجام بدین:

    1. از یه رمز عبور قوی و منحصر به فرد استفاده کنین. رمزی که ترکیبی از حروف بزرگ و کوچک، اعداد و نمادها باشه و برای حساب‌های دیگه‌تون ازش استفاده نکرده باشین.
    2. احراز هویت دو عاملی (MFA) رو حتما فعال کنین. این کار امنیت حساب شما رو به شدت بالا می‌بره.
    3. به لینک‌ها و پیوست‌های مشکوک، مخصوصا از طرف فرستنده‌های ناشناس، به هیچ وجه اعتماد نکنین. همیشه قبل از کلیک کردن، فکر کنین.
    4. نرم‌افزارها و سیستم عامل‌تون رو همیشه آپدیت نگه دارین. این آپدیت‌ها معمولا شامل اصلاحیه‌های امنیتی مهمی هستن.
    5. در مورد روش‌های جدید کلاهبرداری مثل فیشینگ، اطلاعات خودتون رو به‌روز نگه دارین. آگاهی، بهترین سلاح شماست.

    منابع

    • [2] What is Email Security? – GeeksforGeeks
    • [4] What Is Email Security? Definition & Best Practices | Proofpoint US
    • [6] Just a moment…
    • [8] What is Email Security? | Why Email Security is Important
    • [10] Gmail Email Security & Privacy Settings – Google Safety Center
    • [1] What is email security? | Cloudflare
    • [3] What Is Email Security? | Microsoft Security
    • [5] What is Email Security? Types of Services and Solutions – Check Point Software
    • [7] What is Email Security? Types, Tactics and Best Practices | Fortinet
    • [9] What Is Email Security? – Protect Against Email Threats – Cisco
  • وی‌پی‌ان چیست؟ چطور امنیت وب را افزایش می‌دهد؟

    بذارید از اسمش شروع کنیم. VPN مخفف عبارت Virtual Private Network هست. اگه بخوایم این سه کلمه رو از هم جدا کنیم و معنی کنیم، فهمیدنش خیلی ساده‌تر میشه:

    • Virtual (مجازی): یعنی فیزیکی نیست. شما برای وصل شدن بهش نیاز به هیچ سیم یا کابل خاصی ندارید. همه چیز دیجیتالی و روی هوا اتفاق میفته.
    • Private (خصوصی): این مهمترین بخششه. یعنی این شبکه مال شماست و کسی نمیتونه سرک بکشه ببینه دارید چیکار میکنید. اطلاعاتتون در امان هست.
    • Network (شبکه): چون چند تا دستگاه رو به هم وصل میکنه. حداقلش دستگاه شما (لپ‌تاپ، گوشی، تبلت) و سرور وی‌پی‌ان. این دوتا با هم کار میکنن تا یک ارتباط برقرار کنن.

    پس وقتی این سه تا رو میذاریم کنار هم، وی‌پی‌ان میشه یک «شبکه خصوصی مجازی». در واقع یک سرویسه که بین دستگاه شما و اینترنت یک ارتباط رمزنگاری شده و امن ایجاد میکنه. فکر کنید اینترنت یک اتوبان شلوغ و پر سر و صداست که همه ماشین‌ها (اطلاعات شما) دارن توش حرکت میکنن و هر کسی میتونه پلاک ماشین شما رو بخونه یا ببینه از کجا به کجا میرید. حالا وی‌پی‌ان مثل اینه که شما یک تونل شخصی و سرپوشیده برای خودتون توی این اتوبان درست کنید. ماشین شما وارد این تونل میشه، از دید بقیه پنهان میمونه و امن و امان به مقصد میرسه. اطلاعات شما اول از این تونل خصوصی و رمزنگاری شده رد میشه، میره به سرور وی‌پی‌ان و بعد از اونجا وارد اینترنت جهانی میشه. این لایه امنیتی اضافه باعث میشه ردگیری کارهایی که آنلاین انجام میدید خیلی سخت‌تر بشه.

    وی‌پی‌ان چطوری کار میکنه؟ یک نگاه به پشت صحنه

    خب، حالا که فهمیدیم وی‌پی‌ان چیه، بیاید یکم فنی‌تر به ماجرا نگاه کنیم ولی بازم به زبون ساده. وقتی شما دکمه «اتصال» یا Connect رو توی برنامه وی‌پی‌ان میزنید، چند تا اتفاق جالب پشت سر هم میفته:

    1. احراز هویت (Authentication): اول از همه، برنامه وی‌پی‌ان شما با سرور وی‌پی‌ان ارتباط برقرار میکنه. مثل یک دست دادن یا معرفی کردنه. سرور چک میکنه که شما واقعا همون کسی هستید که اجازه استفاده از سرویس رو دارید. این پروسه که بهش «هندشیک» یا handshake هم میگن، خیلی سریع اتفاق میفته و کلیدهای رمزنگاری بین دستگاه شما و سرور رد و بدل میشه.
    2. ساخت تونل (Tunneling): بعد از اینکه هویت شما تایید شد، وی‌پی‌ان یک «تونل» رمزنگاری شده روی بستر اینترنت ایجاد میکنه. این تونل امن، مسیر حرکت اطلاعات شما بین دستگاهتون و سرور وی‌پی‌ان هست.
    3. رمزنگاری (Encryption): حالا هر اطلاعاتی که شما میفرستید یا دریافت میکنید، قبل از اینکه از دستگاهتون خارج بشه، توسط برنامه وی‌پی‌ان رمزنگاری میشه. یعنی چی؟ یعنی تبدیل میشه به یک سری کدها و حروف درهم و برهم که اگه کسی وسط راه بهش دسترسی پیدا کنه، هیچی ازش نمیفهمه. مثل اینکه دارید به یک زبون رمزی حرف میزنید که فقط شما و سرور وی‌پی‌ان بلدید. فقط سرور وی‌پی‌ان کلید باز کردن این قفل و خوندن اطلاعات رو داره.
    4. کپسوله‌سازی (Encapsulation): برای اینکه امنیت بسته‌های اطلاعاتی شما بیشتر هم بشه، وی‌پی‌ان هر بسته اطلاعاتی رو داخل یک بسته دیگه قرار میده و اون بسته بیرونی رو رمزنگاری میکنه. مثل اینه که نامه‌تون رو بذارید توی یک پاکت، بعد اون پاکت رو هم بذارید توی یک صندوقچه قفل‌دار. این کار هسته اصلی تونل وی‌پی‌ان رو تشکیل میده و باعث میشه اطلاعات موقع جابجایی امن بمونن.
    5. ارسال و رمزگشایی (Decryption): اطلاعات رمزنگاری شده شما از طریق اون تونل امن به سرور وی‌پی‌ان میرسه. سرور با استفاده از کلید خصوصی خودش، قفل رو باز میکنه، اطلاعات رو از حالت رمز خارج میکنه (رمزگشایی) و به شکل قابل فهم درمیاره.
    6. ارسال به مقصد نهایی: حالا سرور وی‌پی‌ان، درخواست شما رو (مثلا باز کردن یک سایت) به اینترنت میفرسته. اما با یک تفاوت بزرگ: این درخواست دیگه با آدرس IP شما فرستاده نمیشه، بلکه با آدرس IP خود سرور وی‌پی‌ان فرستاده میشه. اینجاست که هویت شما مخفی میمونه.

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

    به طور خلاصه، سه تا کار اصلی و مهم انجام میده:

    • رمزنگاری: ترافیک اینترنت شما رو به کد تبدیل میکنه تا خوندنش برای دیگران خیلی سخت بشه.
    • امنیت انتقال داده: حتی وقتی از وای‌فای‌های عمومی و ناامن استفاده میکنید، وی‌پی‌ان یک لایه امنیتی اضافه میکنه تا اطلاعاتتون راحت دزدیده نشن.
    • پنهان کردن آدرس IP (IP Address Masking): وقتی به وی‌پی‌ان وصل میشید، آدرس IP واقعی شما مخفی میشه و آدرس IP سرور وی‌پی‌ان جایگزینش میشه. اینطوری به نظر میرسه که شما از یک شهر یا کشور دیگه به اینترنت وصل شدید و این کار حریم خصوصی شما رو موقع وب‌گردی خیلی بیشتر میکنه.

    چرا اصلا باید از وی‌پی‌ان استفاده کنیم؟ (کاربردها و مزایا)

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

    ۱. حفظ حریم خصوصی

    این اولین و مهمترین دلیل استفاده از وی‌پی‌انه. شرکت ارائه‌دهنده اینترنت شما (ISP)، میتونه تمام فعالیت‌های آنلاین شما رو ببینه و ثبت کنه. اونها میدونن شما به چه سایت‌هایی سر میزنید، چه فایل‌هایی دانلود میکنید و چقدر آنلاین هستید. این اطلاعات میتونه به شرکت‌های تبلیغاتی فروخته بشه، به دولت داده بشه یا در صورت هک شدن سرورهای ISP، در معرض خطر قرار بگیره. وقتی از وی‌پی‌ان استفاده میکنید، ترافیک شما رمزنگاری میشه. ISP شما فقط میبینه که شما به یک سرور وی‌پی‌ان وصل شدید، اما دیگه نمیتونه ببینه داخل اون تونل چه خبره و شما دارید چیکار میکنید. وی‌پی‌ان عملا فعالیت شما رو از چشم ISP مخفی میکنه.

    ۲. امنیت در شبکه‌های وای‌فای عمومی

    وای‌فای‌های عمومی مثل وای‌فای کافه، فرودگاه یا کتابخونه خیلی وسوسه‌انگیزن، اما به همون اندازه هم میتونن خطرناک باشن. این شبکه‌ها معمولا امنیت پایینی دارن و پسورد ندارن. این یعنی هکرها و افراد سودجو میتونن راحت به این شبکه وصل بشن و اطلاعاتی که بین دستگاه شما و اینترنت رد و بدل میشه رو شنود کنن. به این کار میگن «داده‌ربایی» یا data sniffing. اگه شما توی یک شبکه عمومی به حساب بانکی‌تون سر بزنید یا یک خرید آنلاین انجام بدید، اطلاعات حساس شما مثل رمز عبور یا شماره کارت بانکی در معرض خطر جدی قرار میگیره.

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

    ۳. دور زدن محدودیت‌های جغرافیایی (Geo-restriction)

    بعضی از سایت‌ها و سرویس‌های آنلاین، محتوای خودشون رو بر اساس موقعیت جغرافیایی شما محدود میکنن. مثلا ممکنه یک سرویس استریم فیلم، یک سری فیلم‌ها رو فقط برای کاربران یک کشور خاص نمایش بده. یا شاید شما به یک کشور دیگه سفر کردید و میخواید به محتوای محلی کشور خودتون دسترسی داشته باشید.

    وی‌پی‌ان با تغییر دادن آدرس IP شما این مشکل رو حل میکنه. شما میتونید به یک سرور در کشور مورد نظرتون وصل بشید و اون سایت فکر میکنه شما واقعا در همون کشور هستید. اینطوری میتونید به محتوایی که قبلا براتون قفل بود دسترسی پیدا کنید.

    ۴. جلوگیری از سرقت هویت

    سرقت هویت یک مشکل رو به رشده که هکرها اطلاعات شخصی شما رو میدزدن تا از کارت‌های بانکی شما استفاده کنن، به حساب‌هاتون دسترسی پیدا کنن یا حتی به اسم شما کارهای غیرقانونی انجام بدن. وی‌پی‌ان با رمزنگاری اطلاعات شما در تونل امن، کار رو برای کلاهبردارها سخت میکنه که به اطلاعات شما دسترسی پیدا کنن، مخصوصا در شبکه‌های ناامن. همینطور با مخفی کردن IP، شما رو در برابر حملات سایبری مثل حملات DDoS (Distributed Denial of Service) محافظت میکنه. اگه کسی IP واقعی شما رو ندونه، نمیتونه علیه شما حمله‌ای رو شروع کنه.

    ۵. دسترسی به اطلاعات حساس

    برای بعضی افراد مثل روزنامه‌نگارها، فعالان اجتماعی یا کسانی که در کشورهای با محدودیت اینترنت زندگی میکنن، دسترسی امن به اطلاعات خیلی حیاتیه. وی‌پی‌ان اون لایه امنیتی اضافه رو براشون فراهم میکنه تا بتونن با خیال راحت‌تر به اطلاعات دسترسی پیدا کنن و هویتشون مخفی بمونه.

    ۶. جلوگیری از محدودیت سرعت اینترنت (Bandwidth Throttling)

    گاهی وقت‌ها، ارائه‌دهنده اینترنت (ISP) شما ممکنه سرعت اینترنتتون رو بسته به فعالیت‌هایی که انجام میدید، عمدا کم کنه. مثلا وقتی دارید فیلم استریم میکنید یا فایل‌های حجیم دانلود میکنید، چون این کارها پهنای باند زیادی مصرف میکنه، ISP ممکنه سرعت شما رو محدود کنه تا فشار روی شبکه کمتر بشه. به این کار میگن Throttling.

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

    ۷. کار از راه دور (Remote Work)

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

    انواع مختلف وی‌پی‌ان‌ها: هر کدوم به چه دردی میخورن؟

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

    اسمنوعروش اتصالکاربرد
    وی‌پی‌ان دسترسی از راه دور (Remote Access VPN)خانگی/شخصیاتصال به یک شبکه خصوصی یا سرور شخص ثالث از طریق SSL/TLSبرای کارمندهای دورکار و کاربران عادی که دنبال حریم خصوصی هستن
    وی‌پی‌ان سایت به سایت (Site-to-site VPN)خصوصییک شبکه از طریق LAN یا WAN به شبکه دیگری وصل میشهبرای اتصال دفترهای مختلف یک شرکت بزرگ به هم
    اپلیکیشن‌های وی‌پی‌ان (VPN Applications)موبایلاتصال به شبکه خصوصی از طریق اپلیکیشن روی گوشی هوشمندبرای کاربرانی که در حال حرکت هستن و امنیت روی موبایل براشون مهمه

    حالا بیاید هر کدوم از اینها رو یکم بیشتر باز کنیم:

    ۱. وی‌پی‌ان دسترسی از راه دور (Remote Access VPN)

    این مدل که بهش Client-to-Site یا Host-to-Network هم میگن، رایج‌ترین نوع وی‌پی‌انه که اکثر ماها باهاش سر و کار داریم. در این حالت، یک کاربر (یا یک دستگاه) از راه دور به یک شبکه خصوصی وصل میشه. این میتونه شبکه شرکت شما باشه یا سرورهای یک شرکت ارائه‌دهنده وی‌پی‌ان تجاری.

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

    ۲. وی‌پی‌ان سایت به سایت (Site-to-site VPN)

    این نوع وی‌پی‌ان برای سازمان‌ها و شرکت‌های بزرگ طراحی شده که چندین شعبه در مکان‌های جغرافیایی مختلف دارن. به جای اینکه هر کارمند جداگانه به شبکه مرکزی وصل بشه، وی‌پی‌ان سایت به سایت، کل شبکه یک شعبه (مثلا دفتر تهران) رو به کل شبکه شعبه دیگه (مثلا دفتر اصفهان) از طریق اینترنت وصل میکنه.

    این کار از طریق دستگاه‌های خاصی به اسم «دروازه» یا Gateway در هر دو طرف انجام میشه. در واقع این یک تونل دائمی و پایدار بین دو تا شبکه ایجاد میکنه. به این مدل، Network-to-Network هم میگن. وی‌پی‌ان‌های سایت به سایت خودشون دو نوع دارن:

    • اینترانت (Intranet): وقتی شعبه‌های مختلف یک سازمان به هم وصل میشن. مثلا دفترهای مختلف یک شرکت در شهرهای مختلف با هم در ارتباط هستن.
    • اکسترانت (Extranet): وقتی شبکه‌های چند سازمان مختلف به هم وصل میشن. مثلا یک شرکت برای همکاری با شرکای تجاری یا تامین‌کننده‌هاش، یک شبکه امن مشترک درست میکنه. در این حالت میشه سطح دسترسی‌ها رو هم مدیریت کرد تا هر سازمان فقط به منابع مشخصی دسترسی داشته باشه.

    ۳. وی‌پی‌ان موبایل (Mobile VPN)

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

    یک ویژگی کلیدی وی‌پی‌ان موبایل اینه که حتی وقتی اتصال اینترنت شما قطع و وصل میشه یا بین شبکه‌های مختلف جابجا میشید (مثلا از وای‌فای خونه به اینترنت سیم‌کارت)، ارتباط امن وی‌پی‌ان قطع نمیشه. این برای کسانی که زیاد در حال حرکت هستن یا به اینترنت پایداری دسترسی ندارن، ایده‌آل هست. تا زمانی که برنامه وی‌پی‌ان در حال اجرا باشه، دستگاه شما امن باقی میمونه.

    پروتکل‌های وی‌پی‌ان: موتورهای پشت پرده

    تا اینجا فهمیدیم وی‌پی‌ان چیه و چیکار میکنه. اما چیزی که قدرت و امنیت یک وی‌پی‌ان رو تعیین میکنه، «پروتکل» اونه. پروتکل مثل یک مجموعه از قوانین و دستورالعمل‌هاست که مشخص میکنه تونل امن چطوری ساخته بشه و اطلاعات چطوری رمزنگاری بشن. یک وی‌پی‌ان فقط وقتی میتونه امنیت شما رو تضمین کنه که از یک پروتکل قوی استفاده کنه. بیاید با چند تا از معروف‌ترین پروتکل‌ها آشنا بشیم:

    اسم پروتکلرمزنگاریمسیریابیبهترین کاربرد
    OpenVPN256-bit AES با OpenSSLTCP و UDP, SSL/TLSبهترین گزینه برای استفاده عمومی (ترکیب خوب سرعت و امنیت)
    SSTP256-bit AESTCP, SSL/TLSبهترین گزینه برای ویندوز (چون مایکروسافت ساختتش)
    IKEv2 / IPSec256-bit AESUDPبهترین گزینه برای موبایل (به خاطر پایداری در جابجایی)
    L2TP / IPSec256-bit AESUDPگزینه خوب برای راه‌اندازی‌های اولیه و ساده
    PPTP128-bitTCPهیچ؛ منسوخ شده و ناامن
    WireGuard256-bit AESUDPبهترین گزینه برای کسانی که دنبال تکنولوژی جدید و سرعت بالا هستن

    یک توضیح کوتاه در مورد هر پروتکل:

    • OpenVPN: این پروتکل به نوعی استاندارد صنعتی حساب میشه. منبع باز (Open-source) هست، یعنی کدهاش در دسترس همه قرار داره تا کارشناس‌های امنیتی اون رو بررسی کنن و ایرادهاش رو پیدا کنن. این شفافیت باعث میشه خیلی قابل اعتماد باشه. هم امنه، هم سریع و هم خیلی انعطاف‌پذیر.
    • SSTP (Secure Socket Tunneling Protocol): این پروتکل توسط مایکروسافت ساخته شده و به صورت پیش‌فرض روی سیستم‌عامل ویندوز وجود داره. امنیت خوبی داره و چون مایکروسافت ازش پشتیبانی میکنه، برای کاربرهای ویندوز گزینه خیلی خوبیه.
    • IKEv2/IPsec: اسم کاملش هست Internet Key Exchange version 2. این پروتکل معمولا با IPsec (Internet Protocol Security) ترکیب میشه تا امنیت و سرعت بهینه‌ای داشته باشه. بزرگترین مزیتش اینه که در شرایط اینترنت ناپایدار خیلی خوب کار میکنه و برای موبایل ایده‌آله. مثلا وقتی از وای‌فای به اینترنت 4G سوییچ میکنید، اتصالش قطع نمیشه.
    • L2TP/IPsec: این پروتکل هم مثل قبلی، با IPsec ترکیب میشه تا امن‌تر بشه. راه‌اندازیش نسبتا ساده است اما امروزه خیلی از ارائه‌دهنده‌ها دیگه ازش پشتیبانی نمیکنن چون گزینه‌های بهتری مثل OpenVPN و WireGuard وجود داره.
    • PPTP (Point-to-Point Tunneling Protocol): این یکی از قدیمی‌ترین پروتکل‌هاست و امروزه دیگه منسوخ شده حساب میشه. مشکلات امنیتی زیادی داره و دیگه به عنوان یک گزینه امن شناخته نمیشه. بعضی از وی‌پی‌ان‌های رایگان ممکنه هنوز ازش استفاده کنن که باید خیلی مراقب بود.
    • WireGuard: این یک پروتکل نسبتا جدیده که خیلی سر و صدا کرده. کدنویسیش خیلی سبک‌تر و مدرن‌تره، سرعتش خیلی بالاست و با موبایل هم سازگاری عالی داره. مثل OpenVPN، این هم یک پروژه منبع بازه. در سال ۲۰۲۰، پشتیبانی از وایرگارد به هسته لینوکس و اندروید اضافه شد که این موضوع راه رو برای استفاده گسترده‌تر ازش باز کرد.

    علاوه بر اینها، پروتکل‌های دیگه‌ای هم وجود دارن که کمتر رایج هستن مثل:

    • DTLS (Datagram Transport Layer Security): در وی‌پی‌ان‌هایی مثل Cisco AnyConnect و OpenConnect استفاده میشه تا مشکلاتی که TLS با تونل‌زنی روی TCP داره رو حل کنه.
    • MPPE (Microsoft Point-to-Point Encryption): با پروتکل PPTP کار میکنه.
    • SSH VPN: ابزار OpenSSH قابلیت تونل‌زنی وی‌پی‌ان رو فراهم میکنه اما بیشتر برای اتصال از راه دور به ماشین‌ها استفاده میشه تا یک اتصال سایت به سایت.

    موقع انتخاب یک وی‌پی‌ان خوب، به چه چیزهایی دقت کنیم؟

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

    1. پروتکل‌های قوی: مهمترین ویژگی یک وی‌پی‌ان، امنیته. پس دنبال سرویسی باشید که از پروتکل‌های استاندارد صنعتی با رمزنگاری 256-bit AES استفاده میکنه. این همون سطح از رمزنگاریه که بانک‌ها و ارتش ازش استفاده میکنن. امروزه این یعنی باید سراغ سرویس‌هایی برید که از OpenVPN، IKEv2/IPsec یا WireGuard پشتیبانی میکنن و از پروتکل‌های منسوخ شده مثل PPTP دوری میکنن. بهترین ارائه‌دهنده‌ها به شما اجازه میدن بین چند پروتکل مختلف انتخاب کنید.
    2. سیاست عدم ثبت گزارش (Zero-log Policy): شما از وی‌پی‌ان استفاده میکنید تا از چشم دیگران مخفی بمونید، اما خود شرکت وی‌پی‌ان از نظر تئوری میتونه تمام کارهای شما رو ببینه. برای همین خیلی مهمه شرکتی رو انتخاب کنید که در مورد سیاست ثبت گزارش‌هاش شفاف باشه. یک وی‌پی‌ان no-log یا zero-log یعنی اون شرکت هیچ‌کدوم از فعالیت‌های شما رو ثبت و ذخیره نمیکنه. این شامل گزارش‌های استفاده، گزارش‌های اتصال، داده‌های جلسات یا حتی آدرس IP واقعی شما میشه. اونها فقط اطلاعات اولیه مثل ایمیل و اطلاعات پرداخت شما رو نگه میدارن.
    3. تعداد و پراکندگی سرورها: اگه یک ارائه‌دهنده فقط تعداد کمی سرور در چند جای محدود داشته باشه، ممکنه با کاهش سرعت مواجه بشید. هر چی تعداد سرورها در سراسر جهان بیشتر باشه، هم کاربران بین سرورها پخش میشن و عملکرد بهتر میشه، و هم شما گزینه‌های بیشتری برای انتخاب موقعیت جغرافیایی دارید. اگه سرورها به شما نزدیک‌تر باشن، داده‌های شما مسافت کمتری رو طی میکنن و سرعت بهتر میشه.
    4. کیل سوییچ (Kill Switch): این یک ویژگی امنیتی خیلی مهمه. اگه به هر دلیلی اتصال وی‌پی‌ان شما قطع بشه، دستگاه شما به صورت خودکار به آدرس IP واقعی‌تون برمیگرده و هویت شما لو میره. کیل سوییچ جلوی این اتفاق رو میگیره. به محض اینکه اتصال وی‌پی‌ان قطع بشه، کیل سوییچ کل اتصال اینترنت شما رو قطع میکنه تا هیچ داده‌ای بدون محافظت ارسال نشه.
    5. محافظت از آدرس IP: یک ارائه‌دهنده خوب باید به شما گزینه‌هایی برای مسیریابی مجدد IP بده. مثلا IP اشتراکی (Shared IP) که چندین کاربر رو زیر یک IP گروه‌بندی میکنه و باعث میشه تشخیص فعالیت یک فرد خاص سخت‌تر بشه. همچنین قابلیت تعویض سریع و راحت سرورها به شما این امکان رو میده که موقعیت خودتون رو به راحتی تغییر بدید.
    6. سازگاری با موبایل: اگه امنیت روی موبایل براتون مهمه، دنبال سرویسی باشید که اپلیکیشن‌های موبایل خوبی داشته باشه و از پروتکل IKEv2/IPsec برای پایداری در جابجایی پشتیبانی کنه.
    7. قیمت (پولی در برابر رایگان): به طور کلی، بهتره از وی‌پی‌ان‌های رایگان دوری کنید. یک شرکت پولی، یک شرکت معتبر و واقعیه که از تکنولوژی و زیرساخت باکیفیت پشتیبانی میکنه. یک ارائه‌دهنده پولی احتمال خیلی کمتری داره که فعالیت‌های شما رو ثبت کنه و به شرکت‌های تبلیغاتی بفروشه. درسته که وی‌پی‌ان‌های پرمیوم هزینه ماهانه دارن، اما ارزش امنیت و آرامش خیالی که به دست میارید، خیلی بیشتر از اون هزینه است.
    8. پشتیبانی مشتری: مثل هر شرکت نرم‌افزاری دیگه‌ای، یک ارائه‌دهنده وی‌پی‌ان باید یک تیم پشتیبانی قابل اعتماد داشته باشه که در صورت بروز مشکل، بتونید باهاشون تماس بگیرید.

    محدودیت‌ها و تصورات اشتباه در مورد وی‌پی‌ان

    وی‌پی‌ان یک ابزار فوق‌العاده برای حفظ حریم خصوصی و امنیته، اما جادو نمیکنه. مهمه که بدونیم یک وی‌پی‌ان چه کارهایی رو نمیتونه انجام بده تا یک حس امنیت کاذب بهمون دست نده.

    • وی‌پی‌ان شما رو ۱۰۰ درصد ناشناس نمیکنه: رسیدن به ناشناس بودن کامل در اینترنت تقریبا غیرممکنه. وی‌پی‌ان یک ابزار عالی برای محافظت از حریم خصوصیه، اما ردپای دیجیتالی که شما موقع استفاده از اینترنت به جا میذارید رو نمیشه به طور کامل پاک کرد.
    • وی‌پی‌ان جلوی ویروس‌ها و بدافزارها رو نمیگیره: اگه شما روی یک لینک فیشینگ کلیک کنید یا یک فایل آلوده رو دانلود کنید، دستگاه شما ممکنه آلوده بشه، حتی اگه به وی‌پی‌ان وصل باشید. برای این کار شما به یک برنامه آنتی‌ویروس خوب نیاز دارید. بعضی وی‌پی‌ان‌ها قابلیت‌های اولیه بلاک کردن بدافزار رو دارن اما جایگزین آنتی‌ویروس نیستن.
    • وی‌پی‌ان جلوی کوکی‌ها (Cookies) رو نمیگیره: وی‌پی‌ان میتونه جلوی تبلیغ‌کننده‌ها رو بگیره که از کوکی‌ها برای هدف قرار دادن شما بر اساس IP استفاده کنن، اما خود کوکی‌ها همچنان روی مرورگر شما ذخیره میشن.
    • هنوز هم ممکنه هک بشید: اگه شما اصول اولیه امنیت سایبری رو رعایت نکنید، حتی با وجود وی‌پی‌ان هم در خطر هستید. وی‌پی‌ان از شما در برابر بی‌احتیاطی خودتون محافظت نمیکنه.
    • وی‌پی‌ان معمولا سرعت اینترنت رو کم میکنه: فرایند رمزنگاری و فرستادن اطلاعات به یک سرور دور، زمان‌بره و به طور طبیعی مقداری از سرعت شما رو کم میکنه. این یک نتیجه اجتناب‌ناپذیره. البته اگه از یک وی‌پی‌ان باکیفیت استفاده کنید، این کاهش سرعت به سختی قابل تشخیصه.

    آیا استفاده از وی‌پی‌ان قانونیه؟

    در اکثر کشورهای دنیا، استفاده از وی‌پی‌ان کاملا قانونیه. هیچ اشکالی نداره که شما برای محافظت از حریم خصوصی خودتون قدم بردارید. اما کشورهایی هم هستن که استفاده از وی‌پی‌ان در اونها ممنوع یا غیرقانونیه. کشورهایی مثل چین، ایران، عمان، روسیه، بلاروس، ترکمنستان و امارات متحده عربی (و چند کشور دیگه) محدودیت‌هایی برای استفاده از وی‌پی‌ان دارن.

    نکته مهم اینه که انجام فعالیت‌های غیرقانونی آنلاین، چه با وی‌پی‌ان و چه بدون اون، همچنان غیرقانونیه.

    پرسش و پاسخ‌های متداول

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

    سوال: به طور خلاصه وی‌پی‌ان چیکار میکنه؟
    یک وی‌پی‌ان (شبکه خصوصی مجازی) با رمزنگاری کردن داده‌های شما و مخفی کردن آدرس IP شما، از کاربرهاش محافظت میکنه. این کار باعث میشه فعالیت وب‌گردی، هویت و موقعیت مکانی شما مخفی بمونه و حریم خصوصی و استقلال بیشتری به شما میده.

    سوال: آیا وی‌پی‌ان من رو از ردیابی ISP محافظت میکنه؟
    بله. وی‌پی‌ان با مسیریابی اتصال شما به یک سرور وی‌پی‌ان از راه دور، آدرس IP شما رو مخفی میکنه و موقعیت مکانی شما رو پنهان میکنه. با مخفی شدن این اطلاعات، هویت شما خصوصی باقی میمونه و ارائه‌دهنده اینترنت (ISP)، شرکت‌های تبلیغاتی و مجرمان سایبری نمیتونن شما رو ردیابی کنن.

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

    سوال: وی‌پی‌ان روی گوشی چیه؟
    وی‌پی‌ان روی گوشی آیفون یا اندروید یک اپلیکیشن موبایله که ترافیک اینترنت رو رمزنگاری میکنه، آدرس IP دستگاه رو مخفی میکنه و یک وب‌گردی امن‌تر و خصوصی‌تر رو از طریق یک شبکه خصوصی مجازی فراهم میکنه.

    سوال: چطوری یک وی‌پی‌ان نصب کنم؟
    برای نصب یک وی‌پی‌ان، اپلیکیشن ارائه‌دهنده مورد نظرتون رو دانلود کنید، اجراش کنید و وارد حساب کاربری‌تون بشید. بعد از اون، میتونید به سرور دلخواهتون وصل بشید تا اتصال اینترنتتون امن بشه.

    منابع

    • [2] Virtual private network – Wikipedia
    • [4] What is a VPN – Meaning and all you need to know – Surfshark
    • [6] Everything You Need to Know About VPNs and How They Work – CNET
    • [8] What is a VPN and what does it do? – Norton
    • [1] What is a VPN and why it’s important : r/VPN
    • [3] What is a VPN? Why Should I Use a VPN? | Microsoft Azure
    • [5] What is a VPN? Virtual private network meaning | NordVPN
    • [7] Is a VPN actually worth it? : r/VPN
    • [9] What Is a Virtual Private Network (VPN)? – Cisco
  • اعتماد صفر یا Zero Trust، رویکرد نوین به امنیت سایبری

    بذارین اول از یه روش قدیمی شروع کنیم که بفهمیم چرا اصلا به یه چیز جدید مثل اعتماد صفر نیاز پیدا کردیم. تا همین چند سال پیش، شرکت‌ها و سازمان‌ها به امنیت شبکه مثل یه قلعه نگاه می‌کردن. یه قلعه محکم با دیوارهای بلند و یه خندق دورش. هر چیزی که بیرون این قلعه بود، «غیرقابل اعتماد» و «بد» حساب میشد و هر کسی یا هر چیزی که داخل قلعه بود، «قابل اعتماد» و «خوب» بود.

    فکر کنین شما کارمند یه شرکتین. وقتی وارد ساختمون شرکت میشین و به شبکه داخلی وصل میشین، انگار از پل متحرک قلعه رد شدین و وارد شدین. از اون لحظه به بعد، سیستم امنیتی شرکت به شما اعتماد کامل داشت. میگفت: «خب، این دیگه خودیه! بذار هر کاری میخواد بکنه.» شما میتونستین به همه فایل‌ها، پرینترها و سرورهای داخلی راحت دسترسی داشته باشین. این روش بهش میگن امنیت مبتنی بر محیط (Perimeter-based security).

    چرا دیگه مدل قلعه و خندق جواب نمیده؟

    این مدل تا وقتی خوب بود که همه کارمندها توی یه ساختمون بودن و همه اطلاعات شرکت روی سرورهای همون ساختمون بود. اما دنیای امروز خیلی فرق کرده:

    • دورکاری و کار هیبریدی: الان خیلی‌ها از خونه کار میکنن. دیگه کسی داخل قلعه نیست.
    • سرویس‌های ابری (Cloud): اطلاعات شرکت‌ها دیگه فقط روی سرورهای خودشون نیست. کلی از اطلاعات و نرم‌افزارها روی سرویس‌های ابری مثل مایکروسافت، آمازون و گوگل پخش شدن.
    • دستگاه‌های شخصی (BYOD): خیلی‌ها با لپ‌تاپ یا گوشی شخصی خودشون به شبکه شرکت وصل میشن.
    • اینترنت اشیا (IoT): کلی دستگاه مثل پرینترهای هوشمند، دوربین‌ها و سنسورها به شبکه وصلن که امنیت‌شون همیشه عالی نیست.

    با این همه تغییر، دیگه چیزی به اسم «محیط شبکه» یا همون دیوار قلعه وجود نداره. همه چیز پخش و پلاست. حالا اگه یه هکر بتونه یه جوری خودش رو برسونه داخل این شبکه گسترده (مثلا با دزدیدن رمز عبور یه کارمند دورکار)، اون وقت چی میشه؟ سیستم امنیتی قدیمی میگه: «اینم خودیه!» و هکر مثل شما میتونه به همه جا سرک بکشه. این حرکت هکر در داخل شبکه رو بهش میگن حرکت جانبی (Lateral Movement). اینجاست که فاجعه اتفاق می‌افته.

    تولد یک ایده جدید: اعتماد صفر (Zero Trust)

    حدود سال ۲۰۱۰، یه تحلیل‌گر از شرکت تحقیقاتی فارستر (Forrester Research) به اسم جان کیندرواگ (John Kindervag) اومد و گفت این مدل قلعه و خندق دیگه فایده نداره. اون یه ایده جدید مطرح کرد که اسمش رو گذاشت «اعتماد صفر».

    فلسفه اعتماد صفر خیلی ساده‌ست. میگه: «هرگز اعتماد نکن، همیشه بررسی کن» (Never trust, always verify).

    این یعنی چی؟ یعنی دیگه فرقی نمیکنه شما داخل شبکه شرکت باشین یا بیرونش. روی مبل خونه‌تون نشستین یا پشت میزتون توی اداره. هر بار که بخواین به یه فایل، یه نرم‌افزار یا هر منبع دیگه‌ای دسترسی پیدا کنین، سیستم باید هویت شما و سلامت دستگاه شما رو از اول بررسی کنه. انگار که یه نگهبان فوق‌العاده وسواسی دم در هر اتاق شرکت ایستاده و هر بار که میخواین وارد یه اتاق جدید بشین، کارت شناسایی شما رو چک میکنه، حتی اگه ده ثانیه پیش شما رو دیده باشه!

    پس اعتماد صفر یه محصول یا یه سرویس خاص نیست که بریم بخریم و نصب کنیم. این یه استراتژی و یه مدل فکری برای طراحی سیستم‌های امنیتیه. این مدل فرض میکنه که هکرها هم داخل شبکه هستن هم بیرونش. پس به هیچ‌کس و هیچ‌چیز به طور پیش‌فرض اعتماد نمیکنه.

    سه اصل اساسی در دنیای اعتماد صفر

    کل این مدل فکری روی سه تا پایه اصلی بنا شده. بیاید این سه تا اصل رو با هم مرور کنیم:

    اصلتوضیح ساده و خودمونی
    بررسی صریح (Verify explicitly)همیشه هویت و مجوز دسترسی رو بر اساس تمام اطلاعات موجود چک کن. یعنی فقط به یه رمز عبور قانع نشو. ببین این کاربر کیه، از کجا وصل شده، دستگاهش چیه، وضعیت سلامت دستگاهش چطوره و… بعد اجازه بده.
    استفاده از دسترسی با حداقل امتیاز (Use least privilege access)به هر کاربر فقط و فقط به اندازه‌ای که برای انجام کارش نیاز داره دسترسی بده، نه بیشتر. مثل ارتش که به هر سرباز اطلاعات رو بر اساس نیاز به دانستن (need-to-know) میدن. وقتی هم کارش تموم شد، دسترسی رو ازش بگیر.
    فرض کردن رخنه امنیتی (Assume breach)همیشه فرض کن که هکرها همین الان داخل شبکه هستن. با این فرض، باید کاری کنی که اگه یه بخش از شبکه هک شد، هکر نتونه به بخش‌های دیگه بره و کل سیستم رو نابود کنه. باید محدوده خسارت یا اون «شعاع انفجار» (Blast Radius) رو به حداقل برسونی.

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

    اعتماد صفر چطوری کار میکنه؟ ستون‌های اصلی

    خب، حالا که با فلسفه‌اش آشنا شدیم، ببینیم در عمل چطوری پیاده‌سازی میشه. سازمان‌های مختلفی مثل موسسه ملی استاندارد و فناوری آمریکا (NIST) و آژانس امنیت سایبری و زیرساخت آمریکا (CISA) اومدن و مدل‌هایی برای پیاده‌سازی اعتماد صفر ارائه دادن. یکی از معروف‌ترین مدل‌ها، مدل CISA هست که پنج تا ستون اصلی داره. بیاید این ستون‌ها رو بشناسیم:

    ۱. هویت (Identity)

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

    • احراز هویت چندعاملی (MFA): دیگه وارد کردن یه رمز عبور کافی نیست. سیستم باید حداقل دو تا مدرک از شما بخواد تا مطمئن بشه خودتون هستین. مثلا بعد از وارد کردن رمز، یه کد هم به گوشی شما میفرسته. این روش باید در مقابل حملات فیشینگ هم مقاوم باشه.
    • کنترل مداوم: فقط اول کار هویت رو چک نمیکنیم. در تمام مدتی که به سیستم وصل هستین، رفتار شما زیر نظر گرفته میشه.
    • حداقل امتیاز: همونطور که گفتیم، هر کاربر فقط به منابعی که برای کارش ضروریه دسترسی داره.

    ۲. دستگاه (Device)

    هر دستگاهی که به شبکه وصل میشه (لپ‌تاپ، گوشی، سرور، پرینتر و…) یه نقطه ضعف بالقوه‌ست. پس باید حواس‌مون به دستگاه‌ها هم باشه.

    • لیست موجودی: سازمان باید یه لیست کامل و به‌روز از تمام دستگاه‌های مجاز داشته باشه. هر دستگاهی که تو این لیست نیست، حق ورود نداره.
    • بررسی سلامت دستگاه: قبل از اینکه به یه دستگاه اجازه اتصال داده بشه، سیستم باید سلامت اون رو چک کنه. مثلا ببینه آنتی‌ویروسش آپدیته؟ سیستم‌عاملش نسخه جدیده؟ برنامه مشکوکی روش نصب نیست؟
    • نظارت دائمی: وضعیت دستگاه‌ها به طور مداوم کنترل میشه تا اگه مشکلی پیش اومد، سریعا دسترسی اون دستگاه قطع بشه.

    ۳. شبکه/محیط (Network/Environment)

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

    • میکروسگمنتیشن (Microsegmentation): به جای تقسیم‌بندی سنتی شبکه، از این روش استفاده میشه که شبکه‌ها رو به بخش‌های خیلی ریزتر و امن‌تر تقسیم میکنه. اینطوری جلوی حرکت جانبی هکرها گرفته میشه. حتی منابعی که یه کاربر بهشون دسترسی نداره، اصلا براش قابل دیدن نیستن.
    • رمزنگاری ترافیک: تمام اطلاعاتی که در شبکه جابجا میشن، باید رمزنگاری بشن تا اگه کسی تونست اونها رو شنود کنه، چیزی ازشون نفهمه.
    • کنترل جریان داده: باید روی تمام داده‌هایی که وارد و خارج میشن نظارت دقیق وجود داشته باشه.

    ۴. اپلیکیشن و بار کاری (Application and Workload)

    نرم‌افزارها و سرویس‌هایی که روی سرورها (چه داخلی و چه ابری) اجرا میشن هم باید طبق اصول اعتماد صفر کنترل بشن.

    • مجوزدهی پویا: به جای اینکه یه بار به یه نرم‌افزار دسترسی بدیم و خلاص، دسترسی‌ها به صورت پویا و مداوم چک میشن.
    • نظارت بر ارتباطات: ارتباط بین نرم‌افزارهای مختلف هم زیر نظر گرفته میشه تا اگه رفتار غیرعادی دیده شد، سریعا جلوی اون گرفته بشه.
    • امنیت در فرآیند توسعه: اصول امنیتی باید از همون اول در فرآیند ساخت و توسعه نرم‌افزارها لحاظ بشه.

    ۵. داده (Data)

    و در نهایت، مهم‌ترین دارایی هر سازمانی، یعنی داده‌ها. هدف نهایی همه این کارها، محافظت از داده‌هاست.

    • دسته‌بندی و برچسب‌گذاری: داده‌ها باید بر اساس میزان حساسیت‌شون دسته‌بندی و برچسب‌گذاری بشن تا بشه سیاست‌های امنیتی مناسب رو براشون اعمال کرد.
    • رمزنگاری داده‌ها: همه داده‌ها، چه اونایی که روی هارد ذخیره شدن (at rest)، چه اونایی که در حال انتقال در شبکه هستن (in transit) و چه اونایی که دارن پردازش میشن (in use)، باید رمزنگاری بشن.
    • جلوگیری از نشت داده (Data Exfiltration): باید مکانیزم‌هایی وجود داشته باشه که جلوی خروج غیرمجاز داده‌های حساس از سازمان رو بگیره.

    دو ستون اضافه برای حرفه‌ای‌ها

    بعضی مدل‌های پیشرفته‌تر مثل مدل وزارت دفاع آمریکا (DoD)، دو تا ستون دیگه هم به این پنج تا اضافه میکنن:

    • مشاهده و تحلیل (Visibility and Analytics): باید ابزارهایی داشته باشیم که به طور مداوم همه اتفاقات شبکه رو ثبت و تحلیل کنن. اینطوری میشه رفتارهای مشکوک رو شناسایی کرد و به صورت هوشمندانه تصمیم‌های امنیتی گرفت.
    • اتوماسیون و هماهنگی (Automation and Orchestration): خیلی از این فرآیندها باید به صورت خودکار انجام بشن. سیستم باید بتونه به صورت اتوماتیک به تهدیدها واکنش نشون بده و سیاست‌های امنیتی رو بین سیستم‌های مختلف هماهنگ کنه.

    پیاده‌سازی اعتماد صفر: از کجا شروع کنیم؟

    پیاده‌سازی این مدل یه پروژه بزرگ و طولانیه و نمیشه یه شبه انجامش داد. اما سازمان‌ها میتونن قدم به قدم این مسیر رو طی کنن. این چند تا مرحله میتونه یه نقشه راه خوب باشه:

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

    یه فناوری کلیدی که برای پیاده‌سازی این مدل استفاده میشه ZTNA (Zero Trust Network Access) هست. ZTNA یه جور جایگزین مدرن برای VPN های قدیمیه. VPN شما رو به کل شبکه وصل میکرد، اما ZTNA فقط و فقط شما رو به همون نرم‌افزار یا منبعی که بهش نیاز دارین وصل میکنه و بقیه شبکه رو از شما مخفی نگه میداره.

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

    این موضوع انقدر جدی شده که حتی دولت‌ها هم وارد عمل شدن.

    • در سال ۲۰۲۱، رئیس جمهور آمریکا، جو بایدن، با فرمان اجرایی ۱۴۰۲۸، همه آژانس‌های فدرال دولت آمریکا رو موظف کرد که معماری اعتماد صفر رو پیاده‌سازی کنن. بعد از اون در ژانویه ۲۰۲۲، دفتر مدیریت و بودجه (OMB) هم استراتژی فدرال اعتماد صفر رو در یادداشت ۲۲-۰۹ منتشر کرد.
    • شرکت مایکروسافت هم در نوامبر ۲۰۲۳ ابتکاری به اسم Secure Future Initiative (SFI) رو شروع کرد که تعهدی چند ساله برای امن‌تر کردن محصولاتش هست. بخش بزرگی از این ابتکار، پیاده‌سازی سفت و سخت مدل اعتماد صفر در زیرساخت‌های خود مایکروسافته.

    این نشون میده که اعتماد صفر دیگه یه ایده تئوری نیست و به یه استاندارد مهم در دنیای امنیت تبدیل شده.

    مزایای اعتماد صفر چیه؟

    خب این همه دردسر برای چی؟ پیاده‌سازی این مدل چه فایده‌هایی داره؟

    • کاهش سطح حمله (Attack Surface): چون دسترسی‌ها خیلی محدود میشن و خیلی از منابع از دید کاربرهای غیرمجاز مخفی هستن، هکرها نقاط کمتری برای نفوذ پیدا میکنن.
    • جلوگیری از حرکت جانبی: حتی اگه یه هکر بتونه یه حساب کاربری یا یه دستگاه رو هک کنه، به خاطر میکروسگمنتیشن نمیتونه به راحتی در شبکه حرکت کنه و خسارت زیادی بزنه.
    • محافظت بهتر از داده‌ها: با رمزنگاری و کنترل دسترسی دقیق، داده‌ها در هر حالتی امن‌تر هستن.
    • پشتیبانی امن از دورکاری: این مدل برای دنیای امروز که پر از کارمندهای دورکار و سرویس‌های ابریه، کاملا طراحی شده و امنیت رو در این محیط‌های پراکنده فراهم میکنه.
    • افزایش دید و کنترل: چون همه چیز به طور مداوم ثبت و تحلیل میشه، مدیران شبکه دید خیلی بهتری روی اتفاقات دارن و میتونن سریع‌تر به تهدیدها واکنش نشون بدن.
    • ساده‌سازی زیرساخت: در بلندمدت، این مدل میتونه با حذف ابزارهای امنیتی قدیمی و پیچیده مثل VPN های سنتی، به ساده‌تر شدن زیرساخت IT کمک کنه.

    چالش‌های مسیر اعتماد صفر

    البته این مسیر گل و بلبل هم نیست و چالش‌هایی داره:

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

    پرسش و پاسخ‌های متداول (یه جورایی امتحان آخر ترم!)

    خب، حالا که کل درس رو با هم مرور کردیم، بذارین چند تا سوال کلیدی که ممکنه تو ذهن‌تون باشه رو جواب بدیم.

    سوال ۱: پس اعتماد صفر یه نرم‌افزاره که باید بخریم؟

    نه دقیقا. اعتماد صفر یه استراتژی و یه چارچوب فکریه. البته برای پیاده‌سازی این استراتژی، شما به ابزارها و فناوری‌های مختلفی مثل ZTNA، سیستم‌های مدیریت هویت (IAM)، احراز هویت چندعاملی (MFA) و ابزارهای نظارتی نیاز دارین. اما نمیتونین برین تو مغازه و بگین «یه اعتماد صفر بدین»!

    سوال ۲: فرق اصلی اعتماد صفر با VPN چیه؟

    یه VPN سنتی شما رو به کل شبکه شرکت وصل میکنه و بهتون یه آدرس IP داخلی میده. از اون به بعد، انگار شما داخل «قلعه» هستین و به خیلی چیزها دسترسی دارین. اما ZTNA که بر اساس مدل اعتماد صفر کار میکنه، شما رو به شبکه وصل نمیکنه. بلکه یه تونل امن و مستقیم فقط بین شما و همون نرم‌افزاری که لازمش دارین ایجاد میکنه. اینطوری هم امنیت بالاتره و هم تجربه کاربری معمولا بهتر و سریع‌تره.

    سوال ۳: این مدل فقط برای شرکت‌های خیلی بزرگه؟

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

    سوال ۴: آیا اعتماد صفر امنیت رو صد در صد تضمین میکنه؟

    در دنیای امنیت هیچ چیز صد در صد نیست. همیشه تهدیدهای جدیدی به وجود میان. اما اعتماد صفر یه رویکرد خیلی موثر برای بالا بردن سطح امنیت و کاهش شدید ریسک حملات سایبری در دنیای دیجیتال امروزه. این مدل با فرض کردن اینکه حمله اتفاق افتاده، سازمان رو برای بدترین سناریوها آماده میکنه.

    سوال ۵: SASE که این روزها زیاد میشنویم، چه ربطی به اعتماد صفر داره؟

    سوال خوبیه! SASE (Secure Access Service Edge) یه مدل معماری دیگه‌ست که خدمات شبکه (مثل SD-WAN) و خدمات امنیتی (مثل ZTNA، فایروال ابری و…) رو در قالب یه سرویس یکپارچه ابری ارائه میده. اعتماد صفر، فلسفه و چارچوب اصلی دسترسی در مدل SASE هست. به عبارت دیگه، SASE زیرساخت و سرویس‌ها رو فراهم میکنه و اعتماد صفر قوانین و مدل فکری حاکم بر اون زیرساخت رو تعیین میکنه. این دوتا مفهوم مکمل همدیگه هستن.

    منابع

    • [2] What Is Zero Trust? Zero Trust Security Model | Akamai
    • [4] Zero Trust security model – ITSAP.10.008 – Canadian Centre for Cyber Security
    • [6] What is Zero Trust Architecture? – Palo Alto Networks
    • [8] What is Zero-Trust outside of the marketing bs? : r/AskNetsec
    • [10] What Is Zero Trust? | Benefits & Core Principles – Zscaler
    • [1] What is Zero Trust? | Microsoft Learn
    • [3] Zero Trust security | What is a Zero Trust network? | Cloudflare
    • [5] What is Zero Trust? – Guide to Zero Trust Security | CrowdStrike
    • [7] What Is Zero Trust? | IBM
    • [9] What Is Zero-Trust Networking? – Cisco
  • هوش مصنوعی (AI) چیست، یک تعریف ساده و عمیق شدن بیشتر

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

    حالا بیایم سر تعریف اصلی. هوش مصنوعی (Artificial Intelligence یا AI) یعنی توانایی یه ماشین برای انجام دادن کارهای شناختی که ما معمولا به ذهن انسان نسبتش میدیم. کارهایی مثل درک کردن، استدلال کردن، یاد گرفتن، تعامل با محیط، حل مسئله و حتی خلاقیت. شاید خودتونم ندونین ولی احتمالا تا حالا کلی با AI سر و کار داشتین؛ دستیارهای صوتی مثل سیری و الکسا یا اون ربات‌های چت که تو بعضی سایت‌ها بهتون کمک میکنن، همشون بر پایه تکنولوژی AI کار میکنن.

    این ماشین‌های هوشمند روز به روز دارن سریع‌تر و پیچیده‌تر میشن. مثلا بعضی کامپیوترها به مرحله‌ای به اسم «اگزااسکیل» رسیدن. یعنی میتونن توی یک ثانیه، به اندازه‌ای محاسبه انجام بدن که یه نفر آدم باید ۳۱ میلیارد و ۶۸۸ میلیون و ۷۶۵ هزار سال وقت بذاره تا انجامش بده. دیگه فقط بحث محاسبه نیست، کامپیوترها دارن مهارت‌ها و قدرت درکی پیدا میکنن که یه زمانی فقط مخصوص ما انسان‌ها و چندتا گونه دیگه بود.

    اما ارزش واقعی AI به خود سیستم‌هاش نیست، بلکه به اینه که شرکت‌ها چطور از این سیستم‌ها برای کمک به انسان‌ها استفاده میکنن و چقدر میتونن عملکردشون رو شفاف توضیح بدن تا اعتماد بقیه رو جلب کنن.

    از کجا شروع کنیم؟ بیایم با یادگیری ماشین آشنا بشیم

    خب، وقتی میگیم AI، در واقع داریم در مورد یه خانواده بزرگ از تکنولوژی‌ها حرف میزنیم. یکی از مهم‌ترین اعضای این خانواده یادگیری ماشین (Machine Learning یا ML) هست.

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

    این روزها حجم داده‌هایی که تولید میشه اونقدر زیاد و پیچیده است که ما انسان‌ها از پس پردازشش برنمیایم. همین موضوع، هم پتانسیل یادگیری ماشین رو بیشتر کرده و هم نیازمون بهش رو. از دهه ۱۹۷۰ که استفاده از یادگیری ماشین گسترده شد، تاثیرات بزرگی تو صنایع مختلف داشته، مثلا تو تحلیل تصاویر پزشکی یا پیش‌بینی خیلی دقیق وضعیت آب و هوا.

    به طور کلی، سه مدل اصلی برای یادگیری ماشین وجود داره:

    • یادگیری نظارت شده (Supervised learning): تو این مدل، الگوریتم رو با داده‌های برچسب‌دار آموزش میدیم. یعنی چی؟ یعنی مثلا بهش کلی عکس گربه نشون میدیم و بهش میگیم «اینا گربه هستن». هدف اینه که مدل یاد بگیره بین ورودی (عکس) و خروجی (برچسب گربه) یه نقشه پیدا کنه تا بعدا بتونه عکس‌های جدیدی که تا حالا ندیده رو هم درست تشخیص بده.
    • یادگیری نظارت نشده (Unsupervised learning): اینجا دیگه از داده‌های برچسب‌دار خبری نیست. الگوریتم باید خودش الگوها رو تو داده‌های بدون ساختار پیدا کنه. نتیجه نهایی از قبل مشخص نیست. الگوریتم خودش داده‌ها رو بر اساس ویژگی‌هاشون دسته‌بندی میکنه. این مدل برای پیدا کردن الگوها و مدل‌سازی توصیفی خیلی خوبه.
    • یادگیری تقویتی (Reinforcement learning): این مدل رو میشه به «یادگیری با آزمون و خطا» توصیف کرد. یه «عامل» (Agent) یاد میگیره که یه کار مشخص رو با سعی و خطا انجام بده. اینقدر این کار رو تکرار میکنه تا عملکردش به یه سطح قابل قبول برسه. وقتی کار رو خوب انجام میده تشویق (تقویت مثبت) میشه و وقتی بد انجام میده تنبیه (تقویت منفی). مثلا آموزش دادن به یه دست رباتیک برای برداشتن یه توپ، یه نمونه از این نوع یادگیریه.

    یه روش ترکیبی هم به اسم یادگیری نیمه نظارت شده (Semi-supervised learning) وجود داره که توش فقط بخشی از داده‌ها برچسب دارن.

    یک پله عمیق‌تر: یادگیری عمیق و شبکه‌های عصبی

    حالا که با یادگیری ماشین آشنا شدیم، وقتشه بریم سراغ یه نسخه پیشرفته‌تر از اون به اسم یادگیری عمیق (Deep Learning).

    یادگیری عمیق یه زیرمجموعه از یادگیری ماشینه که از شبکه‌های عصبی چندلایه استفاده میکنه تا قدرت تصمیم‌گیری پیچیده مغز انسان رو شبیه‌سازی کنه. این روش تو پردازش طیف وسیع‌تری از داده‌ها (مثل متن و داده‌های بدون ساختار مثل عکس) خیلی ماهره، به دخالت انسان کمتری نیاز داره و معمولا نتایج دقیق‌تری نسبت به یادگیری ماشین سنتی تولید میکنه.

    ایده اصلی یادگیری عمیق استفاده از شبکه‌های عصبی (Neural Networks) هست. این شبکه‌ها از نحوه تعامل نورون‌ها تو مغز انسان الهام گرفته شدن. یه شبکه عصبی از لایه‌های به هم پیوسته از گره‌ها (که شبیه نورون هستن) تشکیل شده. داده‌ها وارد این شبکه میشن و از چندین لایه عبور میکنن. هر لایه ویژگی‌های پیچیده‌تری از داده رو تشخیص میده. مثلا لایه اول ممکنه یه چیزی رو به عنوان یه شکل خاص تشخیص بده و لایه بعدی، بر اساس این اطلاعات، بفهمه که اون شکل یه تابلوی ایست هست. یادگیری عمیق هم مثل یادگیری ماشین، از تکرار برای اصلاح خودش و بهتر کردن قدرت پیش‌بینی‌اش استفاده میکنه.

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

    چند نوع شبکه عصبی معروف هم داریم که خوبه اسمشون رو بدونین:

    • شبکه‌های عصبی پیشخور (Feedforward Neural Networks – FF): یکی از قدیمی‌ترین مدل‌ها که داده‌ها فقط در یک جهت، از لایه‌ها عبور میکنن تا به خروجی برسن.
    • شبکه‌های عصبی بازگشتی (Recurrent Neural Networks – RNN): این مدل‌ها بر خلاف مدل قبلی، از داده‌های سری زمانی یا دنباله‌ای استفاده میکنن و یه جورایی «حافظه» دارن از اتفاقی که تو لایه قبلی افتاده. برای همین تو تشخیص گفتار و ترجمه خیلی به کار میان.
    • حافظه طولانی/کوتاه مدت (Long/Short Term Memory – LSTM): اینم یه مدل پیشرفته از RNN هست که میتونه چیزهایی که چندین لایه قبل اتفاق افتاده رو با استفاده از «سلول‌های حافظه» به خاطر بسپره.
    • شبکه‌های عصبی کانولوشنی (Convolutional Neural Networks – CNN): این‌ها جزو معروف‌ترین شبکه‌های عصبی هستن و بیشتر تو تشخیص تصویر استفاده میشن. لایه‌های مختلفش بخش‌های متفاوتی از یه عکس (مثل رنگ‌ها و لبه‌ها) رو فیلتر میکنن تا در نهایت تصویر رو تشخیص بدن.
    • شبکه‌های مولد تخاصمی (Generative Adversarial Networks – GAN): تو این سیستم، دو تا شبکه عصبی با هم رقابت میکنن. یکی (مولد) سعی میکنه مثال‌های جدید بسازه و اون یکی (تفکیک‌کننده) سعی میکنه تشخیص بده که این مثال‌ها واقعی هستن یا ساختگی. این رقابت در نهایت باعث بهتر شدن خروجی میشه. از این مدل برای ساختن عکس‌های واقعی و حتی آثار هنری استفاده شده.

    جدیدترین پدیده: هوش مصنوعی مولد (Generative AI)

    و اما میرسیم به بحث داغ این روزها: هوش مصنوعی مولد (Generative AI یا Gen AI).

    هوش مصنوعی مولد به مدل‌های یادگیری عمیقی گفته میشه که میتونن در جواب به یه درخواست یا «پرامپت» (Prompt) از طرف کاربر، محتوای جدید و اورجینال مثل متن‌های طولانی، عکس‌های باکیفیت، ویدیوهای واقعی یا صدا تولید کنن. ابزارهایی مثل ChatGPT و DALL-E (که عکس تولید میکنه) نشون دادن که این تکنولوژی پتانسیل تغییر دادن خیلی از شغل‌ها رو داره.

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

    فرایند کار هوش مصنوعی مولد معمولا سه مرحله داره:

    • شروع با یک مدل پایه (Foundation Model): همه چیز با یه مدل پایه شروع میشه. این مدل یه مدل یادگیری عمیق خیلی بزرگه که روی حجم عظیمی از داده‌های خام و بدون برچسب (مثلا ترابایت‌ها متن و عکس از اینترنت) آموزش دیده. این آموزش خیلی سنگین، زمان‌بر و گرونه و به هزاران پردازنده گرافیکی (GPU) و میلیون‌ها دلار هزینه نیاز داره. این مدل‌ها که معروف‌ترینشون مدل‌های زبان بزرگ (Large Language Models یا LLM) هستن، میتونن به صورت خودکار به پرامپت‌ها جواب بدن.
    • تنظیم دقیق (Fine-tuning): بعد از ساخت مدل پایه، باید اون رو برای یه کار مشخص (مثلا تولید یه نوع محتوای خاص) تنظیم کرد. این کار با روش‌های مختلفی مثل آموزش بیشتر با داده‌های مرتبط انجام میشه.
    • ارزیابی و بهبود مداوم: توسعه‌دهنده‌ها و کاربرها به طور مرتب خروجی‌های این ابزارها رو ارزیابی میکنن و مدل رو حتی هفته‌ای یک بار برای دقت و مرتبط بودن بیشتر، دوباره تنظیم میکنن.

    سفری به گذشته: تاریخچه هوش مصنوعی

    برای اینکه بفهمیم الان کجا هستیم، باید بدونیم از کجا شروع کردیم. ایده «ماشینی که فکر میکنه» به یونان باستان برمیگرده، اما اگه بخوایم تاریخ مدرنش رو بررسی کنیم، باید از اینجا شروع کنیم:

    • دهه ۱۹۴۰ و ۱۹۵۰:
      • ۱۹۴۳: وارن مک‌کالک و والتر پیتس یه مدل از نورون‌های مصنوعی رو پیشنهاد دادن که پایه و اساس شبکه‌های عصبی شد.
      • ۱۹۵۰: آلن تورینگ، که بهش «پدر علم کامپیوتر» هم میگن، یه مقاله به اسم «ماشین‌های محاسباتی و هوش» منتشر کرد و این سوال رو پرسید: «آیا ماشین‌ها میتونن فکر کنن؟». اون یه آزمایشی به اسم «بازی تقلید» رو هم معرفی کرد که امروز به «آزمون تورینگ» معروفه. این آزمون توانایی یه ماشین برای نشون دادن رفتار هوشمندانه رو میسنجه.
      • ۱۹۵۶: این سال یه نقطه عطف بود. جان مک‌کارتی، دانشمند کامپیوتر، برای اولین بار از عبارت «هوش مصنوعی» تو یه کارگاه تو کالج دارتموث استفاده کرد. همون سال، آلن نیوول، جی. سی. شاو و هربرت سایمون اولین برنامه کامپیوتری هوش مصنوعی به اسم «Logic Theorist» رو ساختن.
    • چهار مرحله تکامل AI (به روایت رادنی بروکس، فیزیکدان MIT):
      • هوش مصنوعی نمادین (Symbolic AI – از ۱۹۵۶): به این روش، هوش مصنوعی کلاسیک یا حتی GOFAI (مخفف هوش مصنوعی خوب و قدیمی) هم میگن. ایده اصلی اینجا استفاده از نمادها و استدلال منطقی برای حل مسئله بود. مثلا: ژرمن شپرد یه سگه، سگ یه پستانداره، همه پستانداران خونگرم هستن؛ پس ژرمن شپرد باید خونگرم باشه. مشکل اصلی این روش این بود که انسان‌ها باید دانش خودشون از دنیا رو به صورت دستی وارد سیستم میکردن. برای همین این سیستم‌ها با پیچیدگی‌های دنیای واقعی مشکل داشتن و نمیتونستن از داده‌های زیاد یاد بگیرن. این روش تا اواخر دهه ۱۹۸۰ روش غالب بود.
      • شبکه‌های عصبی (با پیشرفت‌هایی در سال‌های ۱۹۵۴، ۱۹۶۹، ۱۹۸۶ و ۲۰۱۲): همونطور که گفتیم، این تکنولوژی پشت رشد انفجاری هوش مصنوعی مولد امروزیه. با اینکه ایده‌اش از دهه ۴۰ مطرح بود، فراز و نشیب‌های زیادی داشت. در سال ۱۹۶۹ دو تا محقق MIT نشون دادن که شبکه‌های عصبی فقط میتونن کارهای خیلی ساده انجام بدن. اما در سال ۱۹۸۶، جفری هینتون و همکارانش این مشکل رو حل کردن. در نهایت در سال ۲۰۱۲، هینتون و دو تا از دانشجوهاش قدرت یادگیری عمیق رو با استفاده از شبکه‌های عصبی با لایه‌های خیلی بیشتر نشون دادن و تمرکز دنیا رو به این سمت بردن.
      • رباتیک سنتی (Traditional Robotics – از ۱۹۶۸): تو دهه‌های اول هوش مصنوعی، محقق‌ها برای پیشبرد تحقیقاتشون ربات میساختن. این ربات‌ها معمولا تو محیط‌های خیلی کنترل شده کار میکردن و رفتارهای کاملا برنامه‌ریزی شده رو تکرار میکردن. با اینکه این ربات‌ها به پیشرفت خود AI کمک زیادی نکردن، اما تو یه زمینه به اسم «مکان‌یابی و نقشه‌برداری همزمان» (SLAM) خیلی تاثیرگذار بودن که به ساخت ماشین‌های خودران و حتی ربات‌های جاروبرقی امروزی کمک کرد.
      • رباتیک مبتنی بر رفتار (Behavior-based Robotics – از ۱۹۸۵): محقق‌ها دیدن که حشرات با تعداد کمی نورون، خیلی خوب تو دنیای واقعی مسیریابی میکنن. پس سعی کردن ربات‌هایی بسازن که بتونن با دانش ناقص و دستورالعمل‌های متناقض، مشکلات رو حل کنن. این ربات‌ها هم تو دلشون شبکه‌های عصبی دارن.
    • دهه ۱۹۸۰ تا امروز:
      • دهه ۱۹۸۰: شبکه‌های عصبی که از الگوریتم «پس‌انتشار» (backpropagation) برای آموزش خودشون استفاده میکردن، به طور گسترده تو کاربردهای AI استفاده شدن. اما بعدش به خاطر محدودیت‌ها، یه دوره رکود دیگه به اسم «زمستان دوم AI» به وجود اومد.
      • ۱۹۹۷: کامپیوتر «دیپ بلو» شرکت IBM، گری کاسپاروف، قهرمان شطرنج جهان رو شکست داد. این یه اتفاق خیلی مهم بود.
      • ۲۰۱۶: برنامه «آلفاگو» شرکت دیپ‌مایند، که با یه شبکه عصبی عمیق کار میکرد، لی سدول، قهرمان جهان تو بازی «گو» رو شکست داد. این پیروزی خیلی مهم بود چون تعداد حرکات ممکن تو بازی گو فوق‌العاده زیاده.
      • ۲۰۲۲: ظهور مدل‌های زبان بزرگ یا LLMها، مثل ChatGPT، یه تغییر عظیم تو عملکرد هوش مصنوعی و پتانسیلش ایجاد کرد.

    انواع هوش مصنوعی: از ضعیف تا فوق هوشمند

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

    دسته‌بندی بر اساس قابلیت:

    • هوش مصنوعی ضعیف یا محدود (Weak AI یا Narrow AI): این‌ها سیستم‌های هوش مصنوعی هستن که برای انجام یه کار مشخص یا مجموعه‌ای از کارهای محدود طراحی و آموزش دیدن. تقریبا تمام هوش مصنوعی که ما امروز میبینیم و استفاده میکنیم از این نوعه. دستیار صوتی الکسا، الگوریتم‌های تشخیص تقلب کارت اعتباری یا موتور جستجوی گوگل همشون نمونه‌هایی از هوش مصنوعی محدود هستن.
    • هوش مصنوعی قوی یا عمومی (Strong AI یا Artificial General Intelligence – AGI): این نوع هوش مصنوعی، توانایی درک، یادگیری و به کار بردن دانش در طیف وسیعی از کارها رو در سطحی برابر یا حتی فراتر از هوش انسان داره. این سطح از AI در حال حاضر فقط در حد تئوری وجود داره و هنوز هیچ سیستمی بهش نرسیده. بعضی محقق‌ها معتقدن رسیدن به AGI به افزایش خیلی زیادی تو قدرت محاسباتی نیاز داره. رادنی بروکس، رباتیک‌دان MIT و یکی از بنیان‌گذاران iRobot، معتقده که AGI تا سال ۲۳۰۰ از راه نمیرسه.
    • هوش مصنوعی فوق هوشمند (Artificial Superintelligence – ASI): این دیگه سطح بعدیه که توش ماشین میتونه تو همه زمینه‌ها از انسان برتر عمل کنه. این هم مثل AGI فعلا در قلمرو علمی-تخیلی قرار داره.

    دسته‌بندی بر اساس عملکرد:

    1. نوع ۱: ماشین‌های واکنشی (Reactive Machines): این سیستم‌ها حافظه ندارن و فقط برای یه کار خاص طراحی شدن. مثل کامپیوتر شطرنج‌باز دیپ بلو که کاسپاروف رو شکست داد. اون میتونست مهره‌ها رو تشخیص بده و حرکت بعدی رو پیش‌بینی کنه، ولی از تجربه‌های قبلی برای بازی‌های آینده‌اش استفاده نمیکرد.
    2. نوع ۲: حافظه محدود (Limited Memory): این سیستم‌ها حافظه دارن و میتونن از تجربیات گذشته برای تصمیم‌گیری‌های آینده استفاده کنن. بعضی از عملکردهای تصمیم‌گیری تو ماشین‌های خودران اینجوری طراحی شدن.
    3. نوع ۳: نظریه ذهن (Theory of Mind): این یه اصطلاح روانشناسیه. وقتی در مورد AI به کار میره، یعنی سیستمی که میتونه احساسات رو بفهمه، نیت انسان‌ها رو درک کنه و رفتارشون رو پیش‌بینی کنه. این نوع AI هنوز به طور کامل وجود نداره.
    4. نوع ۴: خودآگاهی (Self-awareness): تو این دسته، سیستم‌های AI یه حسی از «خود» دارن که بهشون آگاهی میده. ماشین‌هایی که خودآگاهی دارن، وضعیت فعلی خودشون رو درک میکنن. این نوع AI هم هنوز وجود نداره.

    AI در دنیای واقعی: کاربردها و مزایا

    خب، این همه در مورد تئوری و تاریخ حرف زدیم. حالا بیایم ببینیم این هوش مصنوعی تو دنیای واقعی به چه دردی میخوره.

    مزایای کلی هوش مصنوعی:

    • اتوماسیون (Automation): هوش مصنوعی میتونه کارهای تکراری و خسته‌کننده رو خودکار کنه، چه کارهای دیجیتال مثل جمع‌آوری و وارد کردن داده، چه کارهای فیزیکی مثل جابجا کردن بسته‌ها تو انبار. این کار باعث میشه ما انسان‌ها وقتمون برای کارهای خلاقانه‌تر و باارزش‌تر آزاد بشه.
    • کاهش خطای انسانی: AI میتونه خطاهای دستی تو پردازش داده، تحلیل یا مونتاژ رو از بین ببره چون الگوریتم‌ها هر بار یه فرایند رو به همون شکل دقیق تکرار میکنن.
    • تصمیم‌گیری سریع و دقیق: هوش مصنوعی میتونه سریع‌تر و دقیق‌تر از انسان‌ها پیش‌بینی کنه و تصمیم‌های مبتنی بر داده بگیره.
    • در دسترس بودن همیشگی: AI خسته نمیشه و به استراحت نیاز نداره. ربات‌های چت میتونن ۲۴ ساعته جواب مشتری‌ها رو بدن.
    • افزایش ایمنی: با خودکار کردن کارهای خطرناک مثل کار با مواد منفجره یا کار در اعماق اقیانوس، دیگه نیازی نیست انسان‌ها رو در معرض خطر قرار بدیم.

    کاربردها در صنایع مختلف:

    • خدمات مشتری: شرکت‌ها از ربات‌های چت و دستیارهای مجازی برای جواب دادن به سوالات مشتری‌ها، پیگیری سفارش‌ها و حل مشکلات استفاده میکنن. این ابزارها با استفاده از پردازش زبان طبیعی (Natural Language Processing – NLP) زبان ما رو میفهمن و جواب میدن.
    • کشف تقلب: الگوریتم‌های یادگیری ماشین میتونن الگوهای تراکنش‌ها رو تحلیل کنن و موارد مشکوک مثل خریدهای غیرعادی رو به سرعت تشخیص بدن.
    • تجربه مشتری شخصی‌سازی شده: فروشگاه‌ها و بانک‌ها از AI برای پیشنهاد دادن محصولات و خدماتی که احتمالا دوست دارین، استفاده میکنن.
    • استخدام و منابع انسانی: پلتفرم‌های استخدامی مبتنی بر AI میتونن رزومه‌ها رو بررسی کنن، کاندیداها رو با شرح شغل تطبیق بدن و حتی مصاحبه‌های اولیه رو انجام بدن.
    • توسعه نرم‌افزار: ابزارهای تولید کد با هوش مصنوعی مولد میتونن کارهای کدنویسی تکراری رو ساده کنن و سرعت توسعه برنامه‌ها رو بالا ببرن.
    • تعمیر و نگهداری پیش‌بینی‌کننده: مدل‌های یادگیری ماشین میتونن داده‌های سنسورها رو تحلیل کنن و پیش‌بینی کنن که یه دستگاه کی به تعمیر نیاز داره تا از کار افتادن ناگهانیش جلوگیری بشه.
    • بهداشت و درمان: AI تو تحلیل تصاویر پزشکی برای تشخیص زودهنگام بیماری‌ها، طراحی برنامه‌های درمانی شخصی‌سازی شده و حتی کشف داروهای جدید به کار میره.
    • حمل و نقل: ماشین‌های خودران یه مثال بارز هستن. علاوه بر این، AI برای مدیریت ترافیک، پیش‌بینی تاخیر پروازها و بهینه‌سازی مسیرهای کشتی‌رانی هم استفاده میشه.

    بر اساس یه نظرسنجی در سال ۲۰۲۲، پذیرش مدل‌های هوش مصنوعی از سال ۲۰۱۷ بیش از دو برابر شده و سرمایه‌گذاری تو این حوزه هم به همین نسبت افزایش پیدا کرده. حوزه‌هایی که شرکت‌ها بیشترین ارزش رو از AI میبینن شامل بازاریابی و فروش، توسعه محصول و خدمات، و استراتژی و امور مالی شرکتی هست.

    چالش‌ها، خطرات و بحث‌های اخلاقی

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

    محدودیت‌ها و خطرات مدل‌های AI:

    • خروجی‌های اشتباه: خروجی‌های مدل‌های هوش مصنوعی مولد ممکنه خیلی متقاعدکننده به نظر برسن، ولی گاهی اوقات اطلاعاتی که تولید میکنن کاملا اشتباهه.
    • سوگیری (Bias): این مدل‌ها بر اساس داده‌هایی که باهاشون آموزش دیدن کار میکنن. اگه اون داده‌ها (که معمولا از اینترنت گرفته میشن) شامل سوگیری‌های جنسیتی، نژادی و … باشن، خروجی مدل هم این سوگیری‌ها رو منعکس و حتی تقویت میکنه. مثلا آمازون یه ابزار استخدام مبتنی بر AI ساخته بود که ناخواسته به نفع کاندیداهای مرد عمل میکرد چون داده‌های آموزشی‌اش این سوگیری رو داشتن.
    • امکان سواستفاده: میشه از این مدل‌ها برای فعالیت‌های غیراخلاقی یا مجرمانه استفاده کرد. بعضی کاربرها سعی میکنن مدل‌ها رو «جیل‌بریک» (Jailbreak) کنن، یعنی کاری کنن که قوانین خودشون رو بشکنن و محتوای مضر یا غیرقانونی تولید کنن.
    • هزینه‌های بالا: توسعه و آموزش مدل‌های AI، به خصوص مدل‌های بزرگ، خیلی گرونه. مثلا مدیرعامل OpenAI گفته که آموزش مدل GPT-4 بیشتر از ۱۰۰ میلیون دلار هزینه داشته.
    • پیچیدگی فنی و کمبود متخصص: ساختن و نگهداری سیستم‌های AI به دانش فنی خیلی بالایی نیاز داره و تعداد متخصص‌های این حوزه نسبت به تقاضا کمه.
    • جابجایی شغلی: با خودکار شدن کارها، این نگرانی وجود داره که بعضی شغل‌ها از بین برن و این موضوع باعث نابرابری اقتصادی بشه.
    • تاثیرات زیست‌محیطی: مراکز داده‌ای که این مدل‌ها رو اجرا میکنن، مقدار زیادی انرژی و آب مصرف میکنن که روی محیط زیست تاثیر منفی داره.

    چطور میشه با این خطرات مقابله کرد؟

    • انتخاب دقیق داده‌های آموزشی: باید خیلی مراقب بود که داده‌های اولیه شامل محتوای سمی یا سوگیرانه نباشن.
    • استفاده از مدل‌های تخصصی: به جای استفاده از یه مدل عمومی، شرکت‌ها میتونن از مدل‌های کوچیک‌تر و تخصصی‌تر استفاده کنن یا یه مدل عمومی رو با داده‌های خودشون سفارشی‌سازی کنن.
    • حفظ عامل انسانی (Human in the loop): خیلی مهمه که یه انسان واقعی خروجی مدل AI رو قبل از انتشار یا استفاده نهایی، چک کنه.
    • شفافیت و حاکمیت: باید مشخص باشه که یه سیستم خودکار داره استفاده میشه و نحوه کارش توضیح داده بشه. همچنین باید ساختارهای نظارتی برای مسئولیت‌پذیری وجود داشته باشه.

    قوانین و مقررات برای هوش مصنوعی

    با فراگیر شدن AI، نگرانی‌ها در مورد شفافیت، حریم خصوصی، حق مالکیت معنوی و … هم بیشتر شده. برای همین، دولت‌ها و سازمان‌ها دارن سعی میکنن چارچوب‌هایی برای استفاده مسئولانه از AI ایجاد کنن.

    • منشور حقوق هوش مصنوعی (AI Bill of Rights): دولت آمریکا در سال ۲۰۲۲ یه سندی به اسم «طرح اولیه برای منشور حقوق هوش مصنوعی» آماده کرد. این سند پنج تا اصل اساسی داره:
      1. حق داشتن سیستم‌های ایمن و موثر.
      2. محافظت در برابر تبعیض توسط الگوریتم‌ها.
      3. محافظت در برابر سواستفاده از داده‌ها.
      4. حق دانستن اینکه یک سیستم خودکار در حال استفاده است.
      5. حق انصراف و دسترسی به یک انسان برای حل مشکلات.
    • قانون هوش مصنوعی اتحادیه اروپا (EU’s AI Act): این قانون که قراره در سال ۲۰۲۴ اجرایی بشه، یه مقررات جامع برای AI هست که با قوانین حفاظت از داده و امنیت سایبری فعلی هم هماهنگه.

    در حال حاضر بیشتر از ۶۰ کشور یا اتحادیه، استراتژی‌های ملی برای استفاده مسئولانه از AI دارن، از جمله برزیل، چین، سنگاپور، کره جنوبی و آمریکا.

    یک نگاه هنری: فیلم «A.I. Artificial Intelligence»

    حالا که با جنبه‌های علمی و فنی هوش مصنوعی آشنا شدیم، جالبه ببینیم دنیای هنر و سینما چطور به این موضوع نگاه کرده. یکی از معروف‌ترین فیلم‌ها در این زمینه، فیلم «A.I. Artificial Intelligence» ساخته استیون اسپیلبرگ در سال ۲۰۰۱ هست.

    A.I. Artificial Intelligence
    کارگرداناستیون اسپیلبرگ
    فیلمنامهاستیون اسپیلبرگ
    داستانایان واتسون
    بر اساسداستان کوتاه «اسباب‌بازی‌های فوق‌العاده تمام تابستان دوام می‌آورند» نوشته برایان آلدیس
    بازیگران اصلیهیلی جوئل آزمنت، جود لا، فرانسیس اوکانر
    بودجه۹۰ تا ۱۰۰ میلیون دلار
    فروش۲۳۵.۹ میلیون دلار

    داستان فیلم در یک نگاه:

    فیلم در قرن ۲۲ میگذره. گرمایش جهانی باعث بالا اومدن سطح دریاها شده و ربات‌های انسان‌نما به اسم «مکا» (Mecha) نقش‌های مختلفی تو جامعه دارن. دیوید (با بازی هیلی جوئل آزمنت) یه نمونه اولیه از بچه‌های مکا هست که به طور منحصر به فردی با قابلیت عشق ورزیدن برنامه‌ریزی شده. اون به خانواده‌ای داده میشه که پسرشون در کماست. وقتی پسر واقعی خانواده به طور غیرمنتظره‌ای خوب میشه و به خونه برمیگرده، رقابت و حسادت به وجود میاد و در نهایت دیوید از خونه طرد میشه. دیوید با الهام از داستان پینوکیو، سفری رو شروع میکنه تا «پری آبی» رو پیدا کنه و به یه پسر واقعی تبدیل بشه تا بتونه دوباره عشق مادرش رو به دست بیاره.

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

    پرسش و پاسخ کلاسی

    خب بچه‌ها، تا اینجا سعی کردیم یه دید کلی و جامع از هوش مصنوعی به دست بیاریم. حالا بریم سراغ چندتا سوال که ممکنه تو ذهنتون باشه.

    سوال ۱: فرق دقیق بین هوش مصنوعی، یادگیری ماشین و یادگیری عمیق چیه؟

    جواب: این سه تا مثل عروسک‌های تودرتوی روسی هستن. هوش مصنوعی (AI) وسیع‌ترین مفهومه و به طور کلی به هر تکنولوژی‌ای گفته میشه که رفتار هوشمندانه انسان رو شبیه‌سازی میکنه. یادگیری ماشین (ML) یه زیرمجموعه از AI هست که به سیستم‌ها اجازه میده به جای برنامه‌ریزی مستقیم، از روی داده‌ها یاد بگیرن. و یادگیری عمیق (Deep Learning) هم یه زیرمجموعه تخصصی‌تر از یادگیری ماشینه که از شبکه‌های عصبی با لایه‌های خیلی زیاد برای حل مسائل پیچیده‌تر استفاده میکنه.

    سوال ۲: آیا ChatGPT همون هوش مصنوعی قوی یا AGI هست که در موردش صحبت کردیم؟

    جواب: نه. با اینکه ChatGPT و مدل‌های مشابه خیلی پیشرفته هستن، اما هنوز در دسته هوش مصنوعی ضعیف یا محدود (Narrow AI) قرار میگیرن. اونها برای یه کار مشخص، یعنی پردازش و تولید زبان، آموزش دیدن و نمیتونن مثل انسان در طیف وسیعی از کارهای مختلف فکر و استدلال کنن. اونها آگاهی یا درک واقعی ندارن و فقط در تشخیص الگوهای زبانی خیلی خوب عمل میکنن.

    سوال ۳: چرا میگن «داده» برای هوش مصنوعی اینقدر مهمه؟

    جواب: چون مدل‌های یادگیری ماشین و یادگیری عمیق، اساسا با تحلیل حجم عظیمی از داده‌ها «یاد میگیرن». کیفیت و کمیت داده‌های آموزشی مستقیما روی عملکرد، دقت و حتی «بی‌طرف» بودن مدل AI تاثیر میذاره. اگه داده‌های ورودی کم، اشتباه یا سوگیرانه باشن، خروجی هوش مصنوعی هم همین مشکلات رو خواهد داشت. در واقع داده مثل کتاب درسی برای یه دانش‌آموز میمونه.

    سوال ۴: آیا الان قانونی برای کنترل هوش مصنوعی وجود داره؟

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

    منابع

    • [2] What is AI (Artificial Intelligence)? Definition, Types, Examples & Use Cases
    • [4] Artificial intelligence (AI) | Definition, Examples, Types, Applications, Companies, & Facts | Britannica
    • [6] What is Artificial Intelligence? – NASA
    • [8] What is AI? – Artificial Intelligence Explained – AWS
    • [10] A.I. Artificial Intelligence (2001) – IMDb
    • [1] What Is Artificial Intelligence (AI)? | IBM
    • [3] A.I. Artificial Intelligence – Wikipedia
    • [5] What is (AI) Artificial Intelligence? | Online Master of Engineering | University of Illinois Chicago
    • [7] What Is Artificial Intelligence (AI)? | Google Cloud
    • [9] What is AI (artificial intelligence)? | McKinsey
  • پلی‌رایت Playwright، راهنمای اتوماسیون و تست مرورگرها

    پلی‌رایت (Playwright). احتمالا اسمش رو شنیدید یا دیدید که توی شرکت‌ها و تیم‌های مختلف، بحث بین استفاده از این ابزار و ابزارهای قدیمی‌تر مثل سلنیوم (Selenium) یا حتی رقبای جدیدترش مثل سایپرس (Cypress) داغه. مثلا یه جا ممکنه یه توسعه‌دهنده جوون و تازه‌نفس بیاد و بگه «بیاید فریم‌ورک Robot Framework رو با پلی‌رایت جایگزین کنیم» و کل تیم رو به چالش بکشه. هدف ما اینجا اینه که ببینیم این پلی‌رایت اصلا چی هست، چطور کار میکنه، و چه چیزهایی رو باید در موردش بدونیم. پس آماده باشید که میخوایم قدم به قدم این ابزار رو کالبدشکافی کنیم.

    پلی‌رایت چیه و به چه دردی میخوره؟

    پلی‌رایت یه فریم‌ورک اوپن‌سورس برای اتوماسیون و تست وب هست که توسط مایکروسافت توسعه داده شده. فکر کن میخوای مطمئن بشی که وبسایتت روی همه مرورگرها درست کار میکنه. به جای اینکه خودت دستی بری و دونه دونه دکمه‌ها رو کلیک کنی و فرم‌ها رو پر کنی، میتونی به پلی‌رایت بگی این کار رو برات انجام بده.

    این ابزار با یه API واحد، بهت اجازه میده که تعاملات کاربر رو توی مرورگرهای کرومیوم (Chromium)، فایرفاکس (Firefox) و وب‌کیت (WebKit) شبیه‌سازی کنی.

    مهمترین کاربردهای پلی‌رایت اینها هستن:

    • تست End-to-End: از اول تا آخر یه سناریوی کاربری رو تست میکنه. مثلا از لاگین کردن گرفته تا اضافه کردن محصول به سبد خرید و پرداخت.
    • وب اسکرپینگ (Web Scraping): برای استخراج اطلاعات از وبسایت‌ها به صورت خودکار استفاده میشه.
    • مانیتورینگ عملکرد: عملکرد وبسایت رو زیر نظر میگیره تا ببینه همه چیز روان و سریع اجرا میشه یا نه.

    پلی‌رایت یه ویژگی خیلی مهم داره و اونم اینه که میتونه تست‌ها رو در حالت headless اجرا کنه. یعنی مرورگر باز میشه و کارها رو انجام میده، اما شما هیچ رابط کاربری گرافیکی یا پنجره‌ای ازش نمیبینید. همه چیز توی پس‌زمینه و از طریق خط فرمان اتفاق میفته. البته اگه بخواید، میتونید تنظیمش کنید که مرورگر رو به صورت کامل (non-headless) هم نشون بده.

    این ابزار روی پلتفرم‌های مختلف مثل ویندوز، لینوکس و macOS کار میکنه و میتونی با زبان‌های برنامه‌نویسی مختلفی مثل TypeScript، جاوااسکریپت، پایتون، دات‌نت و جاوا ازش استفاده کنی.

    ویژگی‌هایی که پلی‌رایت رو متمایز میکنه

    • Auto-wait (انتظار خودکار): یکی از دلایل اصلی که تست‌ها شکننده (flaky) میشن و گاهی کار میکنن و گاهی نه، اینه که اسکریپت تست زودتر از آماده شدن یه دکمه یا یه بخش از صفحه، میخواد روش کلیک کنه. پلی‌رایت به طور خودکار منتظر میمونه تا اون عنصر «قابل استفاده» بشه و بعد کارش رو انجام میده. اینطوری نیاز به استفاده از تایم‌اوت‌های مصنوعی که باعث دردسر میشن، از بین میره.
    • Web-first assertions (ادعاهای وب-محور): دستورات بررسی (assertions) توی پلی‌رایت مخصوص دنیای وب طراحی شدن. یعنی به طور خودکار یه شرط رو چک میکنن و اگه درست نبود، چند بار دیگه هم تلاش میکنن تا شاید اون شرط برقرار بشه.
    • Tracing (ردیابی): میتونی تست‌ها رو طوری تنظیم کنی که اگه شکست خوردن، یه گزارش کامل شامل ویدیو، اسکرین‌شات و تمام اتفاقاتی که افتاده رو بهت بده. اینجوری پیدا کردن دلیل مشکل خیلی راحت‌تر میشه.
    • ایزوله‌سازی کامل: پلی‌رایت برای هر تست، یه «کانتکست مرورگر» (browser context) جدید میسازه که مثل یه پروفایل کاملا نو و دست‌نخورده مرورگر میمونه. این کار باعث میشه تست‌ها روی هم اثر نذارن و کاملا از هم جدا باشن. ساختن این کانتکست‌ها هم خیلی سریعه و فقط چند میلی‌ثانیه طول میکشه.
    • پشتیبانی از سناریوهای پیچیده: میتونی سناریوهایی رو تست کنی که شامل چند تب، چند کاربر مختلف یا حتی چند مبدا (origin) متفاوت هستن.
    • رویدادهای قابل اعتماد (Trusted events): پلی‌رایت از پایپ‌لاین ورودی واقعی مرورگر استفاده میکنه. یعنی وقتی میگه روی یه چیزی کلیک کرده، اون کلیک از نظر مرورگر با کلیک یه کاربر واقعی هیچ فرقی نداره.

    نصب و راه‌اندازی اولیه پلی‌رایت

    خب، حالا که فهمیدیم پلی‌رایت چیه، بریم ببینیم چطور باید نصبش کنیم. قبل از هر چیز، باید Node.js نسخه ۲۰، ۲۲ یا ۲۴ روی سیستمت نصب باشه. سیستم‌عاملت هم میتونه ویندوز ۱۰ به بالا، macOS 14 به بالا، یا توزیع‌های لینوکس مثل دبیان ۱۲/۱۳ و اوبونتو ۲۲.۰۴/۲۴.۰۴ باشه.

    برای شروع، میتونی از دستور زیر توی ترمینال پروژه‌ات استفاده کنی:

    # با استفاده از npm
    npm init playwright@latest
    
    # با استفاده از yarn
    yarn create playwright
    
    # با استفاده از pnpm
    pnpm create playwright

    وقتی این دستور رو اجرا میکنی، چند تا سوال ازت میپرسه:

    • میخوای از TypeScript استفاده کنی یا JavaScript؟
    • اسم پوشه تست‌هات چی باشه؟ (معمولا tests یا e2e)
    • میخوای یه فایل workflow برای GitHub Actions اضافه بشه؟ (برای اجرای تست‌ها به صورت خودکار در محیط CI/CD خوبه)
    • مرورگرهای پلی‌رایت نصب بشن؟ (که معمولا جواب «بله» هست)

    بعد از اینکه این مراحل تموم شد، این فایل‌ها و پوشه‌ها به پروژه‌ات اضافه میشن:

    • playwright.config.ts: فایل اصلی تنظیمات پلی‌رایت. اینجا مشخص میکنی تست‌ها روی چه مرورگرهایی، با چه تنظیماتی و … اجرا بشن.
    • package.json: وابستگی‌های پروژه اینجا اضافه میشه.
    • tests/example.spec.ts: یه فایل تست نمونه خیلی ساده.
    • tests-examples/demo-todo-app.spec.ts: یه فایل تست نمونه کامل‌تر که میتونی ازش الگو بگیری.

    بعد از نصب اولیه، باید مرورگرها رو نصب کنی. این دستور هر سه مرورگر اصلی (کرومیوم، فایرفاکس و وب‌کیت) رو دانلود میکنه:

    npx playwright install

    اجرای تست نمونه

    حالا که همه چیز آماده‌ست، میتونی تست نمونه رو اجرا کنی. به طور پیش‌فرض، تست‌ها به صورت موازی و در حالت headless روی هر سه مرورگر اجرا میشن.

    # با استفاده از npm
    npx playwright test
    
    # با استفاده از yarn
    yarn playwright test
    
    # با استفاده از pnpm
    pnpm exec playwright test

    چند تا نکته برای اجرای تست‌ها:

    • اگه میخوای پنجره مرورگر رو ببینی، از فلگ --headed استفاده کن.
    • اگه میخوای تست‌ها فقط روی یه مرورگر خاص اجرا بشن، از --project=chromium استفاده کن.
    • برای اجرای فقط یه فایل تست خاص: npx playwright test tests/example.spec.ts
    • برای باز کردن رابط کاربری گرافیکی تست: --ui

    گزارش تست HTML

    بعد از اینکه تست‌ها تموم شدن، میتونی گزارش HTML رو ببینی. این گزارش بهت یه داشبورد کامل میده که میتونی تست‌ها رو بر اساس مرورگر، وضعیت (موفق، ناموفق، رد شده) فیلتر کنی. اگه تستی شکست خورده باشه، میتونی روش کلیک کنی و خطاها، فایل‌های ضمیمه و مراحل اجرا رو ببینی. این گزارش معمولا فقط وقتی تستی شکست بخوره به طور خودکار باز میشه، اما میتونی با دستور زیر هم به صورت دستی بازش کنی:

    npx playwright show-report

    مدیریت مرورگرها: قلب تپنده پلی‌رایت

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

    نصب مرورگرها و وابستگی‌ها

    همونطور که گفتیم، دستور اصلی برای نصب مرورگرها اینه:

    npx playwright install

    اما میتونی کارهای دیگه‌ای هم انجام بدی:

    • نصب یک مرورگر خاص:
      npx playwright install webkit
    • دیدن لیست تمام مرورگرهای قابل نصب:
      npx playwright install --help
    • نصب وابستگی‌های سیستمی: این دستور مخصوصا توی محیط‌های CI (Continuous Integration) خیلی به درد میخوره، چون تمام پکیج‌های مورد نیاز روی سیستم‌عامل رو نصب میکنه.
      npx playwright install-deps
    • نصب وابستگی‌های یک مرورگر خاص:
      npx playwright install-deps chromium
    • ترکیب نصب مرورگر و وابستگی‌ها:
      npx playwright install --with-deps chromium

    انواع مرورگرها و تنظیماتشون

    پلی‌رایت میتونه تست‌ها رو روی موتورهای اصلی رندر وب (کرومیوم، وب‌کیت، فایرفاکس) و همچنین مرورگرهای برنددار مثل گوگل کروم (Google Chrome) و مایکروسافت اج (Microsoft Edge) اجرا کنه.

    کرومیوم (Chromium)

    به طور پیش‌فرض، پلی‌رایت از بیلد اوپن‌سورس کرومیوم استفاده میکنه. یه نکته جالب اینه که پروژه کرومیوم همیشه از نسخه‌های نهایی مرورگرهایی مثل کروم جلوتره. یعنی وقتی نسخه N گوگل کروم تازه منتشر شده، پلی‌رایت już از کرومیوم نسخه N+1 پشتیبانی میکنه. این بهت کمک میکنه که مشکلات احتمالی وبسایتت با نسخه‌های آینده کروم رو زودتر پیدا کنی.

    پلی‌رایت دو تا بیلد از کرومیوم رو ارائه میده:

    1. بیلد معمولی کرومیوم: برای عملیات headed (با رابط کاربری).
    2. پوسته headless کرومیوم (chromium headless shell): یه نسخه سبک‌تر که فقط برای اجرای headless استفاده میشه.

    اگه تست‌هات رو فقط در حالت headless اجرا میکنی (مثلا روی CI)، میتونی موقع نصب با اضافه کردن فلگ --only-shell از دانلود کردن بیلد کامل کرومیوم جلوگیری کنی و در فضا صرفه‌جویی کنی.

    npx playwright install --with-deps --only-shell
    حالت headless جدید کروم:

    یه حالت headless جدید هم وجود داره که میتونی با استفاده از کانال «chromium» فعالش کنی. طبق مستندات خود کروم:

    حالت Headless جدید، در واقع خود مرورگر واقعی کروم هست و به همین دلیل معتبرتر، قابل اعتمادتر و با امکانات بیشتره. این باعث میشه برای تست‌های end-to-end با دقت بالا یا تست افزونه‌های مرورگر مناسب‌تر باشه.

    برای استفاده از این حالت، باید فلگ --no-shell رو موقع نصب بزنی تا پوسته headless قدیمی دانلود نشه.

    npx playwright install --with-deps --no-shell
    گوگل کروم و مایکروسافت اج

    پلی‌رایت میتونه با نسخه‌های برنددار کروم و اج که روی سیستم شما نصب هستن هم کار کنه (البته به طور پیش‌فرض اونها رو نصب نمیکنه). پلی‌رایت از کانال‌های Stable و Beta این مرورگرها پشتیبانی میکنه.

    کانال‌های موجود اینها هستن: chrome, msedge, chrome-beta, msedge-beta, chrome-dev, msedge-dev, chrome-canary, msedge-canary.

    اگه این مرورگرها روی سیستمت نصب نیستن، میتونی با خود پلی‌رایت نصبشون کنی:

    npx playwright install msedge

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

    چه زمانی از کروم/اج استفاده کنیم و چه زمانی نه؟
    • حالت پیش‌فرض (کرومیوم): در بیشتر موارد، استفاده از کرومیوم پیش‌فرض پلی‌رایت بهترین گزینه‌ست. چون جلوتر از نسخه‌های پایدار هست، بهت این اطمینان رو میده که آپدیت‌های آینده کروم وبسایتت رو خراب نمیکنه.
    • تست رگرسیون (Regression testing): بعضی وقت‌ها سیاست‌های تست شرکت ایجاب میکنه که تست‌ها حتما روی نسخه‌های عمومی و پایدار فعلی مرورگرها اجرا بشن. در این حالت، میتونی از کانال‌های chrome یا msedge استفاده کنی.
    • کدک‌های مدیا (Media codecs): کرومیوم به خاطر مسائل لایسنس، همه کدک‌های ویدیویی و صوتی که کروم و اج دارن رو شامل نمیشه. اگه وبسایتت به این کدک‌های خاص وابسته هست، باید از نسخه‌های رسمی استفاده کنی.
    • سیاست‌های سازمانی (Enterprise policy): کروم و اج به سیاست‌های سازمانی احترام میذارن. این سیاست‌ها ممکنه محدودیت‌هایی مثل پروکسی شبکه یا افزونه‌های اجباری ایجاد کنن که جلوی تست رو میگیرن. در این شرایط، راحت‌ترین کار اینه که برای تست‌های lokal از کرومیوم باندل شده استفاده کنی و روی سرورهای CI که معمولا این محدودیت‌ها رو ندارن، از کانال‌های پایدار استفاده کنی.
    فایرفاکس (Firefox)

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

    وب‌کیت (WebKit)

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

    چالش‌های پیشرفته: داکر، فایروال و مشکلات رایج

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

    پیش‌نصب مرورگرها در داکر برای CI

    یکی از مشکلات رایج اینه: یه نفر میخواد یه کانتینر داکر برای محیط CI بسازه که مرورگرها و وابستگی‌های پلی‌رایت از قبل روش نصب باشن تا مراحل تست سریع‌تر اجرا بشه. اون شخص دستور playwright install-deps رو توی Dockerfile اجرا میکنه و به نظر میاد مرورگر نصب میشه. اما وقتی به مرحله تست میرسه و دستور npx playwright install chromium رو توی پروژه اجرا میکنه، میبینه که مرورگر داره دوباره از اول دانلود میشه!

    این سوال مطرح میشه: چطور میشه مرورگرها رو در یک کانتینر داکر پیش‌نصب کرد بدون اینکه در مرحله تست دوباره دانلود بشن؟

    مستندات پلی‌رایت به طور خاص میگن که install-deps برای محیط‌های CI مفیده، اما باید مطمئن بشیم که مسیر نصب مرورگرها در مرحله ساخت ایمیج داکر و مرحله اجرای تست یکی باشه تا پلی‌رایت بتونه پیداشون کنه.

    ایمیج رسمی داکر پلی‌رایت:

    برای حل این مشکل، خود پلی‌رایت یه ایمیج رسمی داکر ارائه میده که روی اوبونتو ۲۴.۰۴ ساخته شده. توصیه میشه که از نسخه‌ای از این ایمیج استفاده کنید که با نسخه پلی‌رایت پروژه‌تون یکی باشه. اگه نسخه پلی‌رایت توی ایمیج داکر با نسخه پروژه‌تون نخونه، پلی‌رایت نمیتونه فایل‌های اجرایی مرورگر رو پیدا کنه.

    docker pull mcr.microsoft.com/playwright:v1.50.0-noble

    نصب پشت فایروال یا پروکسی

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

    # در Bash (لینوکس/macOS)
    HTTPS_PROXY=https://192.0.2.1 npx playwright install
    
    # در PowerShell (ویندوز)
    $Env:HTTPS_PROXY="https://192.0.2.1"
    npx playwright install

    اگه پروکسی شما از گواهی‌های دیجیتال (CA) نامعتبر استفاده میکنه و با خطای self signed certificate in certificate chain مواجه میشید، باید متغیر محیطی NODE_EXTRA_CA_CERTS رو تنظیم کنید.

    مدیریت مسیر نصب مرورگرها

    پلی‌رایت مرورگرها رو توی پوشه‌های کش مخصوص سیستم‌عامل ذخیره میکنه:

    • ویندوز: %USERPROFILE%\AppData\Local\ms-playwright
    • macOS: ~/Library/Caches/ms-playwright
    • لینوکس: ~/.cache/ms-playwright

    اگه بخوای این مسیر رو تغییر بدی، میتونی از متغیر محیطی PLAYWRIGHT_BROWSERS_PATH استفاده کنی. این کار بهت اجازه میده که مرورگرها رو توی یه پوشه اشتراکی نصب کنی و همه پروژه‌ها از همون استفاده کنن.

    # موقع نصب
    PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install
    
    # موقع اجرای تست
    PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright test

    مشکل در NixOS: داستان کتابخانه‌های داینامیک

    یه چالش خیلی خاص برای کاربرای توزیع لینوکس NixOS پیش میاد. وقتی میخوان یه اسکریپت ساده پلی‌رایت رو اجرا کنن، با خطا مواجه میشن که میگه یه سری کتابخانه‌های اشتراکی (shared objects) پیدا نشدن.

    مشکل چیه؟

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

    راه حل چیه؟

    چند تا راه وجود داره، اما بهترین و ساده‌ترین راه اینه:

    1. استفاده از playwright-core: به جای پکیج کامل playwright، از پکیج playwright-core استفاده کنید. این پکیج مرورگرها رو به صورت خودکار دانلود نمیکنه.
    2. استفاده از کرومیوم خود NixOS: کرومیومی که از طریق Nixpkgs نصب میشه، به صورت استاتیک لینک شده و به کتابخانه‌های خارجی نیازی نداره.
    3. مشخص کردن مسیر اجرایی: توی کدتون، به پلی‌رایت بگید که به جای استفاده از کرومیوم خودش، از کرومیومی که روی سیستم نصب هست استفاده کنه.
    // به جای require('playwright')
    const { chromium } = require('playwright-core');
    
    const browser = await chromium.launch({
      // مسیر کرومیومی که با which chromium پیدا کردید
      executablePath: '/home/jack/.nix-profile/bin/chromium',
      headless: false
    });

    اینطوری پلی‌رایت دیگه دنبال وابستگی‌های داینامیک نمیگرده و مشکل حل میشه.

    اون روی سکه: شناسایی و بلاک کردن پلی‌رایت

    با اینکه پلی‌رایت یه ابزار قدرتمند برای تست هست، اما میشه ازش برای کارهای دیگه‌ای مثل کلاهبرداری خودکار، پر کردن اعتبارنامه‌ها (credential stuffing) و جمع‌آوری داده هم سوءاستفاده کرد. به همین دلیل، خیلی از وبسایت‌ها سعی میکنن ربات‌هایی که با پلی‌رایت ساخته شدن رو شناسایی و بلاک کنن.

    چطور پلی‌رایت در حالت headless شناسایی میشه؟

    • ویژگی Navigator WebDriver: پلی‌رایت در حالت headless، مقدار navigator.webdriver رو توی جاوااسکریپت true میکنه.
    • الگوهای زمانی و تعاملی غیرعادی: اسکریپت‌های پلی‌رایت خیلی سریع‌تر از یه کاربر واقعی کار میکنن. کلیک‌های سریع، زمان بارگذاری صفحه غیرطبیعی و نبود هیچ زمان بیکاری (idle time)، نشونه‌های ربات هستن.
    • نبود حرکات واقعی موس: تعاملات پلی‌رایت حرکات ارگانیک موس یا اسکرول کردن طبیعی رو تولید نمیکنه.
    • هدرهای HTTP سفارشی: درخواست‌های ارسالی توسط پلی‌رایت ممکنه هدرهای ناقص یا ناهماهنگی مثل sec-ch-ua یا user-agent داشته باشن.
    • انگشت‌نگاری (Fingerprinting): تست‌های انگشت‌نگاری از طریق WebGL، Canvas و Audio API در حالت headless نتایج متفاوتی نسبت به یه مرورگر واقعی تولید میکنن.

    چطور میشه پلی‌رایت رو بلاک کرد؟

    • چالش‌های مبتنی بر جاوااسکریپت: استفاده از تکنیک‌های انگشت‌نگاری برای ردیابی حرکات موس یا رندر WebGL.
    • تشخیص ناهنجاری رفتاری: تحلیل رفتار کاربر مثل لاگین‌های متوالی سریع یا حجم بالای درخواست.
    • کپچا (CAPTCHA) و محدودیت نرخ (Rate Limiting): استفاده از کپچاهای پیشرونده و محدود کردن تعداد درخواست‌ها در یک بازه زمانی.
    • بررسی درخواست در سمت سرور: مانیتور کردن هدرهای HTTP غیر استاندارد و الگوهای ترافیک انبوه.

    یک بحث مهم: موتور مرورگر در برابر خود مرورگر

    یه بحث جالبی که توسط یکی از متخصصان به اسم Maaret Pyhäjärvi مطرح شده اینه که وقتی میگیم «پلی‌رایت همه مرورگرهای اصلی رو اتوماتیک میکنه»، داریم یه کم ماجرا رو ساده‌سازی میکنیم.

    موتورهای مرورگر، خود مرورگرها نیستن.

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

    ایشون اشاره میکنه که با اومدن WebDriver Bidi برای همه مرورگرها، این پروتکل جایگزین CDP میشه و ممکنه شرایط رو تغییر بده.

    پرسش و پاسخ

    سوال ۱: آیا حتما باید هر سه مرورگر کرومیوم، فایرفاکس و وب‌کیت رو نصب کنم؟

    نه، اجباری نیست. شما میتونید موقع نصب مشخص کنید که فقط یک یا دو مرورگر خاص نصب بشن. مثلا با دستور npx playwright install chromium فقط کرومیوم نصب میشه. این کار به خصوص در محیط‌های CI برای صرفه‌جویی در فضا و زمان خیلی مفیده.

    سوال ۲: فرق بین playwright و playwright-core چیه؟

    پکیج playwright نسخه کامل هست که شامل خود کتابخانه و اسکریپت‌های دانلود خودکار مرورگرهاست. اما playwright-core یه نسخه سبک‌تره که فقط API اصلی پلی‌رایت رو داره و مرورگرها رو به صورت خودکار دانلود نمیکنه. این پکیج برای سناریوهای خاصی مثل کار با NixOS یا وقتی که میخواید از یه مرورگر از قبل نصب شده روی سیستم استفاده کنید، کاربرد داره.

    سوال ۳: آیا میتونم از نسخه فایرفاکسی که خودم روی کامپیوترم نصب کردم با پلی‌رایت استفاده کنم؟

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

    سوال ۴: headless mode دقیقا یعنی چی؟

    حالت headless یعنی مرورگر تمام کارهای یک مرورگر عادی رو انجام میده (صفحات رو باز میکنه، جاوااسکریپت رو اجرا میکنه، روی دکمه‌ها کلیک میکنه)، اما هیچ پنجره یا رابط کاربری گرافیکی به شما نشون نمیده. همه این اتفاقات در پس‌زمینه رخ میده. این حالت برای اجرای تست‌ها روی سرورها (مثل محیط CI) که رابط گرافیکی ندارن، عالیه و معمولا سریع‌تر و سبک‌تر هم هست.

    سوال ۵: چرا تست‌های من روی CI شکست میخورن ولی روی کامپیوتر خودم درست کار میکنن؟

    این یکی از رایج‌ترین مشکلاته و دلایل زیادی میتونه داشته باشه. یکی از دلایل اصلی که به پلی‌رایت مرتبطه، میتونه مربوط به وابستگی‌های سیستمی باشه. ممکنه روی سیستم عامل سرور CI شما، پکیج‌ها و کتابخانه‌هایی که مرورگرها برای اجرا شدن بهشون نیاز دارن، نصب نباشه. به همین دلیله که دستور npx playwright install-deps خیلی مهمه و باید قبل از اجرای تست‌ها در محیط CI اجرا بشه. دلیل دیگه میتونه تفاوت در نسخه مرورگرها یا خود پلی‌رایت بین دو محیط باشه.

    سوال ۶: آپدیت کردن پلی‌رایت چطوریه و چه نکته‌ای داره؟

    برای آپدیت کردن پلی‌رایت، از دستور npm install -D @playwright/test@latest (یا معادلش در yarn/pnpm) استفاده میکنید. نکته بسیار مهم اینه که بعد از آپدیت خود پکیج پلی‌رایت، تقریبا همیشه باید مرورگرها رو هم آپدیت کنید. چون هر نسخه جدید پلی‌رایت برای نسخه‌های جدیدتر و مشخصی از مرورگرها طراحی شده. اگه این کار رو فراموش کنید و تست‌ها رو اجرا کنید، خود پلی‌رایت یه خطای واضح بهتون میده و میگه که فایل اجرایی مرورگر رو پیدا نکرده و ازتون میخواد که npx playwright install رو اجرا کنید.

    “`

    منابع

    • [2] Robot Framework – Selenium vs. Playwright – Robot Framework – Robot Framework
    • [4] Running playwright tests – Help – NixOS Discourse
    • [6] Supported Playwright versions, browsers and OSes for Playwright tests on BrowserStack Automate | BrowserStack Docs
    • [8] Sharding Playwright tests by browser – Brian Birtles’ Blog
    • [10] Fast and reliable end-to-end testing for modern web apps | Playwright
    • [12] Use Playwright to automate and test in Microsoft Edge – Microsoft Edge Developer documentation | Microsoft Learn
    • [14] Running playwright with the local firefox – Stack Overflow
    • [16] GitHub – microsoft/playwright: Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.
    • [18] Browsers | Playwright .NET
    • [20] Browsers | Playwright
    • [1] Pre-installing Playwright Browsers and Dependencies in a Docker Container for CI
    • [3] Failed to install the browsers – Playwright Automation tool – Stack Overflow
    • [5] microsoft/playwright – Docker Image | Docker Hub
    • [7] Browsers | Playwright Python
    • [9] Listened to yet another “playwright automates all the main browsers” and ended up collecting logos for sketch. | Maaret Pyhäjärvi
    • [11] node.js – How to update / upgrade Playwright? – Stack Overflow
    • [13] Browser | Playwright
    • [15] What is Playwright headless browser ? How to identify and block it
    • [17] Cypress vs Playwright : r/QualityAssurance
    • [19] Installation | Playwright
  • Google Trends API چیست؟ راهنمای تحلیل ترندهای جستجو

    میخوایم در مورد یه ابزار جدید از گوگل صحبت کنیم. فرض کنید میتونستید نبض جستجوهای مردم دنیا رو تو دستتون بگیرید و ببینید تو هر لحظه، مردم بیشتر دنبال چه چیزی میگردن. گوگل یه ابزاری برای این کار داره به اسم گوگل ترندز (Google Trends) که احتمالا با وبسایتش کار کردید. حالا خبر جدید اینه که گوگل یه راه خیلی حرفه‌ای‌تر برای دسترسی به این اطلاعات درست کرده که اسمش هست «Google Trends API».

    معرفی Google Trends API

    گوگل در تاریخ ۲۴ جولای ۲۰۲۵ رسما اعلام کرد که نسخه آلفای API گوگل ترندز رو منتشر کرده. این خبر در رویدادی به اسم «Google Search Central Live, Deep Dive APAC 2025» توسط دو نفر از تیم گوگل ترندز، یعنی «دنیل وایزبرگ» و «هداس جاکوبی» اعلام شد. تا قبل از این، تنها راه اصلی برای دیدن داده‌های ترندز، همون وبسایت معروفش بود. اما تو سال‌های اخیر، استفاده از این داده‌ها خیلی بیشتر شده و درخواست‌های زیادی برای ساخت یه API وجود داشت تا اینکه بالاخره این اتفاق افتاد.

    شاید بپرسید فرقش با وبسایت چیه؟ وبسایت برای کارهای روزمره عالیه، اما API به شما اجازه میده به شکل مقیاس‌پذیر و خودکار از این داده‌ها داخل سازمان یا پروژه‌هاتون استفاده کنید. بر اساس تحقیقات اولیه‌ای که گوگل انجام داده، این API میتونه برای گروه‌های مختلفی مفید باشه:

    • محقق‌ها: توسعه‌دهنده‌ها و پژوهشگرها میتونن با استفاده از این داده‌ها روی تخصیص منابع عمومی و اولویت‌های تحقیقات علمی تاثیر بذارن.
    • ناشرها و رسانه‌ها: میتونن موضوعات داغ رو دنبال کنن، ترندهای جدید رو کشف کنن و با استفاده از این داده‌ها، داستان‌های جذابی در مورد مسائل مهم روز تعریف کنن.
    • کسب‌وکارها: متخصص‌های بازاریابی و سئو میتونن برای سرمایه‌گذاری منابعشون اولویت‌بندی کنن و استراتژی محتوای بهتری برای کسب‌وکارشون بچینن.

    به طور کلی، این API به محقق‌ها، ژورنالیست‌ها و توسعه‌دهنده‌ها کمک میکنه تا تحلیل‌های بهتری روی رفتار جستجوی مردم و ترندها داشته باشن.

    این API دقیقا چه اطلاعاتی به ما میده؟

    خب، بریم سراغ جزئیات فنی‌تر. این API چه نوع داده‌ای و با چه مشخصاتی در اختیار ما میذاره؟

    داده‌های مقیاس‌بندی شده به صورت ثابت (Consistently Scaled Data)

    این مهم‌ترین و شاید کمی پیچیده‌ترین ویژگی این API هست. بذارید ساده‌ش کنم.

    وقتی شما تو وبسایت گوگل ترندز یه عبارتی رو جستجو میکنید، نموداری به شما نشون میده که اعدادش بین ۰ تا ۱۰۰ هستن. عدد ۱۰۰ یعنی اوج محبوبیت اون عبارت در بازه زمانی و منطقه جغرافیایی که شما انتخاب کردید. مشکل اینجاست که این مقیاس ۰ تا ۱۰۰ هر بار که شما یه جستجوی جدید انجام میدید، از نو محاسبه میشه. یعنی اگه امروز برای کلمه «فوتبال» در یک سال گذشته جستجو کنید و فردا هم همین کار رو بکنید، ممکنه مقیاس نمودار کمی فرق کنه، چون نسبت به کل جستجوها سنجیده میشه.

    اما API از یه روش مقیاس‌بندی متفاوت و ثابت استفاده میکنه. این یعنی اعدادی که از API میگیرید، در درخواست‌های مختلف پایدار هستن. این ویژگی به شما اجازه میده داده‌های چند تا درخواست مختلف رو با هم ترکیب، مقایسه و ادغام کنید. این اعداد، حجم جستجوی مطلق نیستن، بلکه «میزان علاقه به جستجو» رو نشون میدن.

    مزیت این روش چیه؟ برای مثال، فرض کنید شما میخواید میزان محبوبیت چند تا کلمه کلیدی رو در طول زمان زیر نظر بگیرید. با استفاده از API، کافیه هر چند وقت یک بار، فقط داده‌های مربوط به همون دوره جدید رو بگیرید و به داده‌های قبلیتون اضافه کنید. اما در وبسایت، شما مجبور بودید هر بار کل بازه زمانی رو از اول درخواست بدید، چون مقیاس ۰ تا ۱۰۰ در هر درخواست تغییر میکرد.

    یه مزیت دیگه هم اینه که وبسایت ترندز به شما اجازه میده فقط ۵ تا عبارت رو با هم مقایسه کنید، ولی با API میشه ده‌ها عبارت مختلف رو خیلی راحت‌تر با هم مقایسه کرد.

    بازه زمانی و دسته‌بندی داده‌ها

    بر اساس تحلیل‌های گوگل، بیشتر تحلیل‌ها در بازه زمانی ۵ ساله انجام میشن. به همین دلیل، داده‌های این API یک پنجره چرخشی ۱۸۰۰ روزه (یعنی تقریبا ۵ سال) رو پوشش میده. این بازه ۵ ساله به محقق‌ها و ژورنالیست‌ها کمک میکنه تا به رویدادهای مهم گذشته مثل انتخابات (که معمولا هر ۴ سال یک باره) یا رویدادهای ورزشی (مثل المپیک و جام جهانی) نگاه کنن و تحلیلشون کنن. این داده‌ها هم همیشه به‌روز هستن و اطلاعات رو تا ۴۸ ساعت یا ۲ روز قبل در اختیار شما میذارن.

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

    داده‌های جغرافیایی

    این API به شما اجازه میده داده‌ها رو بر اساس موقعیت جغرافیایی هم فیلتر کنید. شما میتونید تفکیک منطقه‌ای (Region) و زیرمنطقه‌ای (Sub-region) رو داشته باشید. این تقسیم‌بندی بر اساس استاندارد معروف ISO 3166-2 انجام میشه. پس میشه علاقه به جستجو رو در سطح کشورها، ایالت‌ها یا حتی گاهی شهرها هم بررسی کرد.

    چه چیزی در این API وجود نداره؟

    یه نکته مهم اینه که این API شامل بخش «Trending Now» یا همون جستجوهای داغ لحظه‌ای نمیشه. تمرکز اصلی روی داده‌های بخش «Explore» وبسایت ترندز هست.

    یه نگاه به پشت صحنه: نمونه درخواست و پاسخ API

    هداس جاکوبی در کنفرانس معرفی این API، یه نمونه کد پایتون برای درخواست دادن به این API و پاسخی که دریافت میشه رو نشون داد تا یه دید کلی از نحوه کار باهاش به دست بیاریم.

    نمونه درخواست (Request):

    # Create a client
    client = TrendsApiClient()
    
    # Create a request
    time_series_request = {
     "terms": ["/m/02vxn", "/m/012l1r"],
     "time_range": {
      "start_time": (2024-01-01),
      "end_time": (2024-03-31),
     },
     "granularity": "WEEKLY",
     "restriction": {
      "region": "US"
     }
    }
    
    # Run a query for the time series
    time_series = client.get_time_series(time_series_request)

    نمونه پاسخ (Response):

    print(time_series)
    {
      "points": [
        {
          "time_range": {
            "start_time": (2024-01-01),
            "end_time": (2024-01-07),
          },
          "search_interest": 4400.0,
          "scaled_search_interest": 62,
        },
        {
          "time_range": {
            "start_time": (2024-01-08),
            "end_time": (2024-01-14),
          },
          "search_interest": 7100.0,
          "scaled_search_interest": 100,
        },
        …
      ]
    }

    همونطور که تو پاسخ میبینید، برای هر بازه زمانی (اینجا هفتگی)، یه عدد search_interest و یه عدد scaled_search_interest برگردونده میشه که همون مقیاس ثابت و پایدار هست.

    هنوز در مرحله آزمایشی: آلفا یعنی چی؟

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

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


    پرسش و پاسخ: چند نکته مهم که باید در مورد داده‌های گوگل ترندز بدونید

    خب، حالا که با API جدید آشنا شدیم، بیاید چند تا سوال مهم و اساسی رو در مورد خود داده‌های گوگل ترندز مرور کنیم. این‌ها نکاتی هستن که چه با وبسایت کار کنید و چه با API، باید حواستون بهشون باشه.

    سوال ۱: این داده‌ها کل جستجوهای گوگل رو شامل میشن یا فقط یه نمونه هستن؟

    پاسخ: داده‌های گوگل ترندز بر اساس نمونه‌ای بزرگ اما فیلتر نشده از جستجوهای واقعی گوگل هستن. این داده‌ها چند تا ویژگی دارن: ناشناس هستن (هویت هیچ شخصی مشخص نمیشه)، دسته‌بندی میشن (موضوع هر جستجو مشخص میشه) و تجمیع میشن (با هم گروه‌بندی میشن).

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

    سوال ۲: «نرمال‌سازی داده» که در موردش صحبت شد، دقیقا یعنی چی؟

    پاسخ: گوگل ترندز داده‌های جستجو رو نرمال‌سازی میکنه تا مقایسه عبارت‌های مختلف با هم ساده‌تر بشه. این فرایند به این شکله:

    1. هر نقطه داده بر کل جستجوهای اون منطقه جغرافیایی و بازه زمانی تقسیم میشه. این کار برای مقایسه محبوبیت نسبی انجام میشه. وگرنه، مناطقی که بیشترین حجم جستجو رو دارن (مثل شهرهای بزرگ)، همیشه در رتبه‌های بالا قرار میگرفتن.
    2. اعداد به دست اومده، بر اساس نسبت اون موضوع به کل جستجوها در همه موضوعات، روی یه مقیاس ۰ تا ۱۰۰ قرار میگیرن.

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

    سوال ۳: آیا این داده‌ها کاملا تمیز و بدون خطا هستن؟

    پاسخ: داده‌های گوگل ترندز بازتاب جستجوهای روزمره مردم هستن، اما میتونن فعالیت‌های جستجوی غیرعادی رو هم شامل بشن. برای مثال، جستجوهای خودکار (توسط ربات‌ها) یا جستجوهایی که ممکنه برای اسپم کردن نتایج جستجو انجام بشن.

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

    سوال ۴: پس چه نوع جستجوهایی از داده‌های ترندز حذف میشن؟

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

    • جستجوهایی که توسط تعداد خیلی کمی از افراد انجام شده: ترندز فقط داده‌های مربوط به عبارت‌های محبوب رو نشون میده. برای همین، عبارت‌هایی که حجم جستجوی خیلی پایینی دارن به صورت «۰» نمایش داده میشن.
    • جستجوهای تکراری: جستجوهای تکراری از یک شخص در یک بازه زمانی کوتاه حذف میشن.
    • کاراکترهای خاص: جستجوهایی که دارای آپاستروف و کاراکترهای خاص دیگه هستن، فیلتر میشن.
    • جستجوهای انجام شده توسط محصولات و سرویس‌های گوگل: این شامل جستجوهای داخلی که توسط «AI Mode» و «AI Overviews» انجام میشه هم هست.
    سوال ۵: میشه از این داده‌ها مثل نظرسنجی استفاده کرد؟ مثلا برای پیش‌بینی نتیجه انتخابات؟

    پاسخ: نه! گوگل ترندز یک نظرسنجی علمی نیست و نباید با داده‌های نظرسنجی اشتباه گرفته بشه. این ابزار فقط «علاقه به جستجو» در مورد موضوعات خاص رو نشون میده. افزایش ناگهانی جستجو برای یه موضوع به این معنی نیست که اون موضوع «محبوب» هست یا داره «برنده» میشه. فقط نشون میده که به دلایل نامشخصی، کاربران زیادی دارن در مورد اون موضوع جستجو میکنن. همیشه باید داده‌های گوگل ترندز رو فقط به عنوان یکی از چندین نقطه داده در نظر گرفت و بعد نتیجه‌گیری کرد.

    سوال ۶: فرق داده‌های گوگل ترندز با داده‌هایی که «Google News Lab» منتشر میکنه چیه؟

    پاسخ: برای رویدادهای بزرگ، ممکنه Google News Lab داده‌هایی رو (مثلا از طریق توییتر) به اشتراک بذاره که از طریق ابزار عمومی گوگل ترندز قابل دسترسی نیستن. گوگل این داده‌ها رو هم از نظر فعالیت‌های غیرعادی زیر نظر داره. اما مثل داده‌های عادی ترندز، این‌ها هم علمی نیستن و ممکنه آینه دقیقی از فعالیت جستجو نباشن.

    سوال ۷: تفاوت گوگل ترندز با «تکمیل خودکار» یا Autocomplete گوگل چیه؟

    پاسخ: Autocomplete یه ویژگی در جستجوی گوگل هست که طراحی شده تا شما جستجوهاتون رو سریع‌تر تایپ کنید. پیش‌بینی‌های اون بر اساس جستجوهای واقعی و رایجی هست که در گوگل اتفاق میفته و به حروفی که شما وارد میکنید، موقعیت مکانی و جستجوهای قبلیتون مرتبطه.

    برخلاف گوگل ترندز، Autocomplete تابع سیاست‌های حذف محتوای گوگل و فیلترهای الگوریتمی هست که سعی میکنن پیش‌بینی‌های ناقض قوانین رو نشون ندن. به همین دلیل، نباید Autocomplete رو بازتابی از محبوب‌ترین عبارت‌های جستجو در یک موضوع دونست.

    سوال ۸: تفاوتش با داده‌های جستجوی AdWords (گوگل ادز) چیه؟

    پاسخ: گزارش عبارت‌های جستجو در گوگل ادز برای تبلیغ‌دهنده‌ها طراحی شده و اطلاعاتی در مورد حجم جستجوی ماهانه و میانگین ارائه میده. در حالی که گوگل ترندز برای بررسی عمیق‌تر داده‌های جزئی‌تر و در لحظه (real-time) طراحی شده.

    سوال ۹: نمودارهایی که تو صفحه Explore گوگل ترندز میبینیم، بر اساس چه منطقه زمانی هستن؟

    پاسخ: این بستگی به بازه زمانی داره که شما انتخاب میکنید:

    • برای بازه‌های زمانی ۳۰ روز یا طولانی‌تر: داده‌های نمودار از زمان جهانی هماهنگ (UTC) استفاده میکنن. این باعث میشه یه استاندارد جهانی ثابت وجود داشته باشه و مقایسه ترندهای طولانی‌مدت در مناطق مختلف، بدون پیچیدگی‌های مناطق زمانی محلی یا تغییرات ساعت تابستانی، راحت‌تر باشه.
    • برای بازه‌های زمانی ۷ روز یا کوتاه‌تر: داده‌های نمودار از منطقه زمانی محلی خود شما (که در مرورگر یا دستگاهتون تنظیم شده) استفاده میکنن. این برای داده‌های ساعتی یا روزانه مفیده چون درک نوسانات در لحظه رو با توجه به اتفاقات روزمره در منطقه خودتون راحت‌تر میکنه.

    منابع

    • [2] Introducing the Google Trends API (alpha): a new way to access Search Trends data  |  Google Search Central Blog  |  Google for Developers
    • [4] Google Trends API (Alpha) Launching: Breaking News From Search Central Live
    • [1] FAQ about Google Trends data – Trends Help
    • [3] Google Trends API Alpha | Google Search Central  |  Documentation  |  Google for Developers
  • راهنمای سازگاری وردپرس با PHP و دیتابیس

    خلاصه

    • وردپرس برای کار کردن، به PHP و پایگاه داده (معمولا MySQL یا MariaDB) نیاز داره. این سه تا باید با هم هماهنگ باشن.
    • تیم وردپرس همیشه سعی می‌کنه از نسخه‌های جدید PHP پشتیبانی کنه و معمولاً هر سال با انتشار نسخه جدید وردپرس، این هماهنگی رو اعلام می‌کنه.
    • «پشتیبانی بتا» یعنی هسته وردپرس با اون نسخه PHP سازگاره ولی ممکنه افزونه‌ها و قالب‌ها هنوز نه؛ تا وقتی ۱۰ درصد سایت‌ها از اون نسخه استفاده نکنن، بتا میمونه.
    • وردپرس به مرور پشتیبانی از نسخه‌های قدیمی PHP رو قطع کرده تا کاربران به سمت نسخه‌های جدیدتر، امن‌تر و سریع‌تر برن؛ مثلاً PHP 7.0 و 7.1 دیگه پشتیبانی نمیشن.
    • جدول‌های سازگاری نشون میدن که کدوم نسخه وردپرس با کدوم نسخه PHP و پایگاه داده کار می‌کنه و چه حداقل‌هایی برای نصب هر نسخه از وردپرس لازمه.
    • برای مثال، وردپرس 6.8 دیگه با PHP 7.1 و قدیمی‌تر کار نمی‌کنه و حداقل PHP 7.2.24 برای وردپرس 6.6 به بالا لازمه.
    • اهمیت این هماهنگی مخصوصاً برای هاستینگ‌ها و مدیران سرورها خیلی بالاست تا زیرساخت مناسب رو فراهم کنن.
    • استفاده از نسخه‌های به روز وردپرس، PHP و پایگاه داده، باعث بهبود عملکرد و افزایش امنیت سایتتون میشه.

    حتما شنیدین که میگن هیچکس یه جزیره تنها نیست. این قضیه تو دنیای نرم‌افزارها هم کاملا درسته. وردپرس، همون سیستم معروفی که کلی از سایت‌های دنیا باهاش ساخته شدن، به تنهایی کار نمیکنه. اون یه تیم حرفه‌ای پشت صحنه داره که بدون اونا عملا هیچ کاری ازش برنمیاد. دوتا از مهم‌ترین عضوهای این تیم، PHP و پایگاه داده (که معمولا MySQL یا MariaDB هستن) هستن.

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

    وردپرس و PHP: یه همکاری نزدیک و برنامه‌ریزی شده

    تیم توسعه وردپرس همیشه سعی میکنه تا جایی که امکان داره از نسخه‌های جدید PHP پشتیبانی کنه. این اتفاق معمولا توی نسخه اصلی وردپرس که هر سال حوالی ماه نوامبر منتشر میشه، همزمان با عرضه نسخه جدید PHP، شکل جدی‌تری به خودش میگیره. این یه جور هماهنگی سالانه است تا وردپرس از قافله تکنولوژی عقب نمونه.

    اما این پروسه پشتیبانی از کی شروع میشه؟ دقیقا بعد از اینکه نسخه جدید PHP به مرحله‌ای به اسم «feature freeze» یا «توقف توسعه ویژگی‌های جدید» میرسه و نسخه‌های آزمایشی یا بتا (beta) اون منتشر میشن. به زبون ساده‌تر، وقتی تیم PHP میگه «خب، ما دیگه ویژگی جدیدی به این نسخه اضافه نمیکنیم و از این به بعد فقط باگ‌ها و مشکلاتش رو برطرف میکنیم»، تیم وردپرس وارد عمل میشه و شروع به تست کردن نرم‌افزار اصلی خودش با اون نسخه جدید PHP میکنه تا ببینه همه چیز سر جاش هست یا نه.

    مفهوم «پشتیبانی بتا» در دنیای وردپرس

    شاید براتون سوال بشه که چرا وردپرس برای یه نسخه جدید PHP، اول یه برچسبی به اسم «پشتیبانی بتا» یا «beta support» میده. دلیلش خیلی جالبه. وردپرس به ندرت به تنهایی استفاده میشه. تقریبا همه سایت‌های وردپرسی کلی افزونه و یه قالب مشخص دارن. پس فقط اینکه هسته اصلی وردپرس با یه نسخه PHP سازگار باشه کافی نیست. باید مطمئن شد که کل اکوسیستم وردپرس، یعنی هزاران افزونه و قالبی که وجود دارن هم با اون نسخه جدید PHP به مشکل نمیخورن.

    برای همین، وردپرس یه قانون برای خودش گذاشته: تا وقتی که حداقل ۱۰ درصد کل سایت‌های وردپرسی دنیا از یک نسخه مشخص PHP یا بالاتر از اون استفاده نکنن، پشتیبانی از اون نسخه به صورت «بتا» باقی میمونه. رسیدن به این آمار ۱۰ درصدی یه نشونه خیلی خوبه که میگه بخش بزرگی از افزونه‌ها و قالب‌ها هم خودشون رو با نسخه جدید PHP هماهنگ کردن و میشه با خیال راحت‌تری ازش استفاده کرد.

    جدول سازگاری نسخه‌های وردپرس و PHP

    برای اینکه این رابطه پیچیده رو بهتر درک کنیم، یه جدول خیلی کاربردی وجود داره که نشون میده کدوم نسخه از وردپرس با کدوم نسخه از PHP کار میکنه. تو این جدول، «Y» به معنی سازگار بودن (Yes)، «N» به معنی ناسازگار بودن (No) و «*Y» به معنی پشتیبانی بتا (Beta Support) است.

    نسخه وردپرس / نسخه PHP8.48.38.28.18.07.47.37.27.17.05.6 و قدیمی‌تر
    6.8Y*YYYYYYYNNN
    6.7Y*Y*YYYYYYNNN
    6.6NY*YYYYYYNNN
    6.5NY*Y*YYYYYYYN
    6.4NY*Y*YYYYYYYN
    6.3NNY*YYYYYYYN

    همونطور که میبینین، مثلا وردپرس نسخه ۶.۸ با نسخه‌های PHP از ۷.۲ تا ۸.۳ کاملا سازگاره (Y) و برای نسخه ۸.۴ پشتیبانی بتا (*Y) ارائه میده، اما با نسخه‌های ۷.۱ و قدیمی‌تر کار نمیکنه (N). این جدول مثل یه راهنمای سریع عمل میکنه.

    نگاهی به تاریخچه تغییرات و تصمیم‌های مهم

    تیم وردپرس در طول زمان تصمیم‌های مختلفی در مورد سطح پشتیبانی از نسخه‌های PHP گرفته. این تصمیم‌ها نشون میده که چطور وردپرس همیشه در حال تکامل و حرکت به سمت تکنولوژی‌های جدیدتره. بیاین با هم این خط زمانی رو مرور کنیم:

    • جولای ۲۰۲۵: تو این تاریخ، پشتیبانی از PHP 8.3 در وردپرس ۶.۸ از حالت بتا خارج شد و به حالت کاملا سازگار تغییر پیدا کرد.
    • جولای ۲۰۲۵: همزمان، یه تصمیم مهم دیگه هم گرفته شد: پشتیبانی امنیتی برای نسخه‌های خیلی قدیمی وردپرس، یعنی از ۴.۱ تا ۴.۶، به طور کامل متوقف شد.
    • آوریل ۲۰۲۵: قبلا یه برچسبی به اسم «سازگار با استثناها» یا «compatible with exceptions» وجود داشت که تو این تاریخ بازنشسته شد و دیگه ازش استفاده نمیشه.
    • در وردپرس ۶.۷: پشتیبانی آزمایشی یا همون بتا برای PHP 8.4 به وردپرس اضافه شد.
    • در وردپرس ۶.۶:
      • سطح پشتیبانی از PHP 8.2 به «سازگار با استثناها» ارتقا پیدا کرد. (این قبل از بازنشسته شدن این برچسب بود).
      • یه اتفاق مهم دیگه این بود که پشتیبانی از PHP 7.0 و PHP 7.1 به طور کامل قطع شد.
    • در وردپرس ۶.۴: پشتیبانی بتا برای PHP 8.3 معرفی شد.
    • در وردپرس ۶.۳:
      • اینجا هم یه خداحافظی بزرگ داشتیم: پشتیبانی از PHP 5.6 متوقف شد.
      • پشتیبانی از PHP 8.1 به حالت «سازگار با استثناها» تغییر کرد.
      • پشتیبانی از PHP 8.0 هم به حالت «سازگار با استثناها» رفت.
      • یه نکته فنی مهم در مورد این «استثناها» وجود داشت: وردپرس از قابلیتی به اسم «پارامترهای نام‌گذاری شده» (named parameters) که در PHP 8.0 معرفی شد، پشتیبانی نمیکنه. دلیلش اینه که اسم پارامترها در کدهای وردپرس ممکنه در آینده تغییر کنه و این باعث ایجاد مشکل میشه.
      • استثنای دیگه مربوط به دو بخش از فایل سیستم وردپرس یعنی WP_Filesystem_FTPext و WP_Filesystem_SSH2 بود که در صورت شکست اتصال، مشکلاتی داشتن.
    • در وردپرس ۶.۱: پشتیبانی بتا برای PHP 8.2 اضافه شد.
    • در وردپرس ۵.۹: پشتیبانی بتا برای PHP 8.1 اضافه شد.
    • در وردپرس ۵.۶: پشتیبانی بتا برای PHP 8.0 اضافه شد.
    • دسامبر ۲۰۲۲: پشتیبانی امنیتی برای وردپرس نسخه‌های ۳.۷ تا ۴.۰ متوقف شد.
    • در وردپرس ۵.۲: یه جهش بزرگ اتفاق افتاد و پشتیبانی از نسخه‌های قدیمی PHP یعنی از ۵.۲ تا ۵.۵ به کل قطع شد.
    • در وردپرس ۵.۳: پشتیبانی از PHP 7.4 به وردپرس اضافه شد.

    این روند نشون میده که چطور وردپرس به تدریج کاربرانش رو به سمت استفاده از نسخه‌های جدیدتر، امن‌تر و سریع‌تر PHP هدایت میکنه.

    تیم کامل شد: وردپرس، PHP و پایگاه داده (MySQL/MariaDB)

    همونطور که اول گفتیم، رابطه وردپرس فقط با PHP نیست. پایگاه داده هم یه ضلع مهم این مثلثه. اطلاعاتی که در ادامه میاد، بیشتر برای شرکت‌های هاستینگ و مدیران سرورها مهمه، چون اونها باید مطمئن بشن که زیرساخت لازم برای اجرای بی‌دردسر وردپرس رو فراهم کردن.

    جدول زیر نشون میده که هر نسخه از وردپرس در زمان انتشارش، با چه نسخه‌هایی از PHP، MySQL و MariaDB که در اون زمان در دسترس و از نظر امنیتی پشتیبانی میشدن، هماهنگ بوده. البته این به این معنی نیست که وردپرس با تمام اون نسخه‌ها صد در صد سازگاری کامل داشته، ولی معمولا اینطور بوده.

    نسخه وردپرسPHPMySQLMariaDBتاریخ انتشار
    وردپرس 6.88.1 – 8.48.0 / 8.4 / 9.110.5 – 10.6 / 10.11 / 11.4 – 11.52025-04-15
    وردپرس 6.78.1 – 8.48.0 / 8.4 / 9.110.5 – 10.6 / 10.11 / 11.4 – 11.52024-11-12
    وردپرس 6.68.1 – 8.38.0 / 8.2 – 8.410.5 – 10.6 / 10.11 / 11.1 – 11.2 / 11.42024-07-16
    وردپرس 6.58.1 – 8.38.0 – 8.310.4 – 10.6 / 10.11 / 11.0 – 11.32024-04-02
    وردپرس 6.48.0 – 8.28.0 – 8.210.4 – 10.6 / 10.10 – 11.12023-11-07
    وردپرس 6.38.0 – 8.25.7 – 8.110.4 – 10.6 / 10.9 – 11.02023-08-08
    وردپرس 6.28.0 – 8.25.7 – 8.010.3 – 10.112023-03-28
    وردپرس 6.17.4 – 8.15.7 – 8.010.3 – 10.62022-11-01
    وردپرس 6.07.4 – 8.15.7 – 8.010.3 – 10.62022-05-24
    وردپرس 5.97.4 – 8.15.7 – 8.010.2 – 10.62022-01-25
    وردپرس 5.87.3 – 8.05.7 – 8.010.2 – 10.62021-07-20
    وردپرس 5.77.3 – 8.05.7 – 8.010.2 – 10.52021-03-09
    وردپرس 5.67.3 – 8.05.7 – 8.010.2 – 10.52020-12-08
    وردپرس 5.57.2 – 7.45.7 – 8.010.2 – 10.52020-08-11
    وردپرس 5.47.2 – 7.45.6 – 8.010.2 – 10.42020-03-31
    وردپرس 5.37.2 – 7.45.6 – 8.010.2 – 10.42019-11-12
    وردپرس 5.27.1 – 7.35.6 – 8.010.1 – 10.32019-05-07
    وردپرس 5.17.1 – 7.35.6 – 8.010.1 – 10.32019-02-21
    وردپرس 5.07.1 – 7.35.6 – 8.010.1 – 10.32018-12-06
    وردپرس 4.97.0 – 7.25.5 – 5.710.0 – 10.22017-11-15
    وردپرس 4.85.6 – 7.15.5 – 5.710.0 – 10.22017-06-08
    وردپرس 4.75.6 – 7.15.5 – 5.75.5 – 10.12016-12-06
    وردپرس 4.65.6 – 7.05.5 – 5.75.5 – 10.12016-08-16
    وردپرس 4.55.6 – 7.05.5 – 5.75.5 – 10.12016-04-12
    وردپرس 4.45.5 – 7.05.5 – 5.75.5 – 10.12015-12-08
    وردپرس 4.35.5 – 5.65.5 – 5.65.5 – 10.02015-08-18
    وردپرس 4.25.4 – 5.65.5 – 5.65.5 – 10.02015-04-23
    وردپرس 4.15.4 – 5.65.5 – 5.65.5 – 10.02014-12-17
    وردپرس 4.05.4 – 5.65.5 – 5.65.5 – 10.02014-09-04
    وردپرس 3.95.3 – 5.55.5 – 5.65.5 – 10.02014-04-16
    وردپرس 3.85.3 – 5.55.5 – 5.65.52013-12-12
    وردپرس 3.75.3 – 5.55.5 – 5.65.52013-10-24

    این جدول یه دید کلی و تاریخی از این هماهنگی به ما میده.

    حداقل‌های مورد نیاز: کف خواسته‌های وردپرس

    جدول قبلی وضعیت در زمان انتشار رو نشون میداد. اما یه سوال مهم‌تر اینه که برای نصب و اجرای یه نسخه مشخص از وردپرس، سرور ما حداقل باید چه مشخصاتی داشته باشه؟ جدول زیر به این سوال جواب میده و نشون میده که چطور با گذشت زمان، حداقل‌های مورد نیاز وردپرس هم رشد کرده.

    نسخه وردپرسحداقل نسخه PHPحداقل نسخه MySQLحداقل نسخه MariaDB
    +WordPress 6.6+7.2.24+5.5.5+5.5.5
    +WordPress 6.5+7.0+5.5.5+5.5.5
    +WordPress 6.3+7.0+5.0.15+5.5
    +WordPress 5.2+5.6.20+5.0.15+5.5
    +WordPress 3.2+5.2.4+5.0.15+5.5
    +WordPress 2.9+4.3+4.1.2
    +WordPress 2.5+4.3+4.0
    +WordPress 2.1+4.2+4.0
    +WordPress 2.0+4.2+3.23.23

    این جدول به وضوح نشون میده که اگه امروز بخواین وردپرس ۶.۶ یا بالاتر رو نصب کنین، دیگه نمیتونین از PHP 7.0 استفاده کنین و حداقل به نسخه ۷.۲.۲۴ نیاز دارین. یا مثلا تا قبل از وردپرس ۳.۲، میشد وردپرس رو روی PHP 5.2.4 هم نصب کرد، چیزی که امروز دیگه ممکن نیست. این تغییرات برای بهبود عملکرد، امنیت و استفاده از ویژگی‌های جدیدتر تکنولوژی‌های پایه، کاملا ضروریه.


    پرسش و پاسخ

    سوال ۱: «پشتیبانی بتا» یا «Beta Support» دقیقا یعنی چی؟ یعنی میتونم از اون نسخه PHP با وردپرس استفاده کنم یا ممکنه سایتم خراب بشه؟

    جواب: پشتیبانی بتا یعنی هسته اصلی نرم‌افزار وردپرس تست شده و با اون نسخه PHP سازگاره. اما چون وردپرس یه اکوسیستم بزرگ از قالب‌ها و افزونه‌ها داره، ممکنه بعضی از اونها هنوز خودشون رو با نسخه جدید PHP هماهنگ نکرده باشن. وردپرس منتظر میمونه تا حداقل ۱۰ درصد از کل سایت‌های وردپرسی در جهان از اون نسخه PHP استفاده کنن تا پشتیبانی رو کامل اعلام کنه. پس استفاده ازش ممکنه ریسک‌هایی برای سازگاری با افزونه‌ها داشته باشه، اما خود وردپرس مشکلی نداره.

    سوال ۲: چرا وردپرس پشتیبانی از نسخه‌های قدیمی PHP مثل ۷.۱ یا ۵.۶ رو قطع میکنه؟

    جواب: بر اساس اطلاعاتی که داریم، وردپرس در نسخه‌های مختلف خودش پشتیبانی از نسخه‌های قدیمی‌تر PHP رو متوقف کرده. مثلا در وردپرس ۶.۶ پشتیبانی از PHP 7.0 و ۷.۱ قطع شد و در وردپرس ۶.۳ پشتیبانی از PHP 5.6 به پایان رسید. این بخشی از روند تکامل وردپرسه تا بتونه با تکنولوژی‌های جدیدتر و امن‌تر هماهنگ بمونه و از قابلیت‌های اونها استفاده کنه.

    سوال ۳: مهم‌ترین تغییرات سازگاری در وردپرس ۶.۳ چی بودن؟

    جواب: طبق اطلاعات موجود، در وردپرس ۶.۳ چند اتفاق مهم افتاد. اول اینکه پشتیبانی از PHP 5.6 به طور کامل متوقف شد. دوم اینکه سطح پشتیبانی برای PHP 8.1 و PHP 8.0 به «سازگار با استثناها» تغییر کرد که البته این برچسب بعدا بازنشسته شد.

    سوال ۴: آیا میتونم وردپرس نسخه ۶.۸ رو روی هاستی با PHP 7.1 نصب کنم؟

    جواب: اگه به جدول سازگاری نسخه‌های وردپرس و PHP نگاه کنیم، برای ردیف وردپرس ۶.۸، در ستون مربوط به PHP 7.1، حرف «N» نوشته شده که به معنی «نه» یا «ناسازگار» است. پس امکان نصب وردپرس ۶.۸ روی PHP 7.1 وجود نداره.

    منابع

    • [2] WordPress Compatibility – Make WordPress Hosting
    • [1] PHP Compatibility and WordPress Versions – Make WordPress Core