پرش به مطلب اصلی

محدودیت دستگاه (HWID)

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

این قابلیت کاملاً اختیاری و به‌صورت پیش‌فرض خاموش است. فقط با کلاینت‌هایی کار می‌کند که بتوانند هدر x-hwid را بفرستند.

چگونه فعال کنیم​

محدودیت در پنل در بخش Subscription → Settings → HWID Device Limit تنظیم می‌شود، نه در .env. سه پارامتر در دسترس است: خود کلید، محدودیت پیش‌فرض دستگاه و متن اعلان برای کلاینت. برای یک گروه خارجی مشخص می‌توان تنظیمات را بازنویسی کرد و برای هر کاربر محدودیت خودش را تعیین کرد.

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

اگر برای کاربر محدودیتی تعیین نشده باشد، محدودیت پیش‌فرض اعمال می‌شود. مقدار 0 در کارت کاربر محدودیت را برای او غیرفعال می‌کند: دستگاه‌ها همچنان ثبت می‌شوند، اما اشتراک همیشه ارائه می‌شود.

خطر

اگر محدودیت فعال باشد و کلاینت هدر x-hwid را نفرستاده باشد، اشتراک ارائه نمی‌شود. پیش از فعال‌سازی مطمئن شوید کاربرانتان از کلاینت‌های پشتیبان استفاده می‌کنند، در غیر این صورت دسترسی را از دست می‌دهند.

کلاینت چه هدرهایی می‌فرستد​

هدرالزامیتوضیح
x-hwidبلهشناسه دستگاه
x-device-osخیرپلتفرم، برای مثال iOS
x-ver-osخیرنسخه سیستم
x-device-modelخیرمدل دستگاه
user-agentخیراپلیکیشن و نسخه آن

مقدار x-hwid باید از 10–64 کاراکتر تشکیل شده باشد: حروف لاتین، ارقام، نشانه‌های = و -. اگر فرمت مناسب نباشد، پنل هدر را کاملاً دور می‌ریزد و HWID را نافرساده‌شده می‌شمارد.

curl -H 'x-hwid: UE42LJXu4DbiCaBv' \
-H 'x-device-os: iOS' \
-H 'x-ver-os: 18.3' \
-H 'x-device-model: iPhone 14 Pro Max' \
https://sub.example.com/XXXXXXXXXXXX

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

هدر پاسخچه زمانی پدید می‌آید
x-hwid-activeمحدودیت در سمت پنل فعال است
x-hwid-not-supportedمحدودیت فعال است، اما کلاینت x-hwid را نفرستاده
x-hwid-max-devices-reachedبیشینه دستگاه‌ها رسیده است
x-hwid-limitهمان، برای سازگاری با کلاینت‌های قدیمی

چه چیزی ذخیره می‌شود​

هر دستگاه در جدول hwid_user_devices قرار می‌گیرد. کلید — جفت «HWID + کاربر» است، بنابراین همان دستگاه برای دو کاربر دو رکورد شمرده می‌شود.

ستونمحتوا
hwidشناسه دستگاه، تا 64 کاراکتر
user_idدارنده اشتراک
platformپلتفرم از x-device-os
os_versionنسخه سیستم از x-ver-os
device_modelمدل از x-device-model
user_agentاپلیکیشن از user-agent
request_ipIP آدرس درخواست اشتراک
created_at, updated_atزمان نخستین و آخرین مشاهده دستگاه

در پنل چه دیده می‌شود​

در کارت کاربر فهرست دستگاه‌هایش نمایش داده می‌شود: پلتفرم، نسخه سیستم، مدل، IP و تاریخ‌ها. دستگاه را می‌توان یکی‌یکی حذف کرد یا کل فهرست را پاک کرد — پس از آن دوباره می‌تواند متصل شود. جست‌وجو بر اساس HWID وجود دارد.

در صفحه جداگانه HWID خلاصه‌ای گرد آمده است: توزیع بر اساس پلتفرم‌ها و اپلیکیشن‌ها، تعداد کل دستگاه‌ها و رکوردهای یکتا، میانگین تعداد دستگاه به ازای کاربر، و همچنین فهرست کاربران با بیشترین تعداد دستگاه. همین داده‌ها از طریق API در دسترس‌اند — دستورهای GET /api/hwid/devices، GET /api/hwid/stats و GET /api/hwid/devices/top-users.

نکته

رویدادهای افزودن و حذف دستگاه (user_hwid_devices.added و user_hwid_devices.deleted) به Webhookها می‌آیند. جزئیات بیشتر — در بخش Webhookها.

مدت نگه‌داری و حریم خصوصی​

جدول hwid_user_devices حساس‌ترین جدول در پایگاه داده است: در آن شناسه دستگاه، مدل، نسخه سیستم، user-agent و IP آدرس قرار دارند. تا وقتی پاک‌سازی خودکار را فعال نکنید، به‌صورت خودکار پاک نمی‌شود.

متغیرپیش‌فرضچه می‌کند
SERVICE_CLEAN_OLD_LOGSfalseپاک‌سازی هفتگی جدول‌های حساس را فعال می‌کند
HWID_DEVICES_RETENTION_DAYS90چند روز دستگاه نگه‌داری شود

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

اگر تاریخ دستگاه‌ها را لازم ندارید، مدت نگه‌داری را کوتاه کنید یا جدول را دستی پاک کنید — از بخش Logs در پنل یا CLI اضطراری.

هشدار

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

گام‌های بعدی​