رکوردهای لاگ
در خانواده ISP هر رکورد لاگ یک اتصال است؛ فیلدها، کدهای نتیجه، دستهها و سه اشتباه رایج در یکپارچهسازی.
در ISP، Datacenter و Gaming هر رکورد لاگ یک اتصال است، نه یک درخواست منفرد: رکورد هنگام بسته شدن اتصال نوشته میشود. در HTTP ساده، یک اتصال keep-alive میتواند چند درخواست را حمل کند؛ فیلد request فقط اولی را نشان میدهد. اتصالی که هنوز باز است، تا بسته نشود در فهرست دیده نمیشود.
هر رکورد، مستقل از نوع سرویس، با همان مجموعه ثابت کلیدها برمیگردد؛ کلیدی که مقدار ندارد null است و هرگز حذف نمیشود. کلیدهای مخصوص خانواده ISP در رکوردهایMobile/Residential همیشه null هستند و statusCode در خانواده ISP همیشه null است. فهرست از جدیدترین رکورد به قدیمیترین مرتب است.
سه دام
فیلدها
✓ یعنی در این نوع مقدار دارد و null یعنی در این نوع همیشه خالی است. فیلدی که ✓ دارد هم اگر برای آن اتصال مقداری ثبت نشده باشد، ممکن است null باشد.
| فیلد | خانواده ISP | Mobile / Residential | معنا |
|---|---|---|---|
id | ✓ | ✓ | شناسه رکورد. در خانواده ISP با requestId یکسان است (ULID)؛ در رکوردهای پیش از 17 سپتامبر 2026 یک شناسه پایدار و مشتقشده است. |
timestamp | ✓ | ✓ | ISO-8601، UTC. در خانواده ISP لحظه بسته شدن اتصال، با دقت ثانیه. فهرست از جدیدترین به قدیمیترین مرتب است. |
level | ✓ | ✓ | connect، disconnect، error، quota یا auth. در خانواده ISP از result به دست میآید (جدول کدهای نتیجه). |
message | ✓ | ✓ | خلاصهای خوانا برای انسان، مثلاً HTTP CONNECT → example.com:443. در خانواده ISP، در رکوردهای ناموفقی که اطلاعات اتصال ندارند، توضیح خوانا و کد نتیجه است (مثلاً This command/protocol is not supported (#103)). قالب آن ممکن است تغییر کند؛ آن را تجزیه نکنید و فیلدهای مربوط را بخوانید. |
method | ✓ | ✓ | دستور یا متد HTTP: CONNECT, GET, POST … در خانواده ISP با command یکسان است (از جمله UDP ASSOCIATE). اگر اتصال پیش از رسیدن به آن مرحله رد شده باشد، null. |
ip | ✓ | ✓ | هدف، به شکل host:port (اگر نام میزبان نباشد، IP). در اتصالی که پیش از تعیین هدف رد شده باشد، null. |
sourceIp | ✓ | ✓ | IP کلاینت شما؛ ماشینی که به پروکسی وصل میشود. |
bytesIn | ✓ | ✓ | بایتهای دانلودشده (از هدف به شما). |
bytesOut | ✓ | ✓ | بایتهای آپلودشده (از شما به هدف). |
durationMs | ✓ | ✓ | مدتی که اتصال باز مانده است، بر حسب میلیثانیه. تأخیر نیست. |
statusCode | null | ✓ | کد وضعیت HTTP. فقط Mobile/Residential. |
headers | null | ✓ | هدرهای HTTP درخواست (متن JSON). فقط Mobile/Residential. |
requestId | ✓ | null | شناسه یکتای اتصال (یک ULID با 26 کاراکتر). در درخواست پشتیبانی همین را بفرستید. در رکوردهای پیش از 17 سپتامبر 2026، null. |
result | ✓ | null | کد نتیجه (جدول زیر). در رکوردهای پیش از 17 سپتامبر 2026، null. |
resultCategory | ✓ | null | success، client، policy، upstream یا unknown. اگر result برابر null باشد، از ok به دست میآید: success یا unknown. |
ok | ✓ | null | آیا اتصال موفق بوده است (true / false). |
errorCode | ✓ | null | شکل متنی 5 رقمی result، مثلاً 00104 (در صورت موفقیت 00000). اگر result برابر null باشد، null. |
service | ✓ | null | پروتکلی که واقعاً استفاده شده است: http یا socks (SOCKS5). در پروتکل auto یک پورت هر دو را میپذیرد. اگر اتصال پیش از رسیدن به آن مرحله رد شده باشد، null. |
proxyType | ✓ | null | نام قدیمی؛ همان مقدار service. |
command | ✓ | null | CONNECT, GET, POST … یا UDP ASSOCIATE (UDP روی SOCKS5؛ در پروتکل auto پشتیبانی میشود). اگر اتصال پیش از رسیدن به آن مرحله رد شده باشد، null. |
request | ✓ | null | نخستین خط درخواست در اتصال. در اتصال keep-alive فقط اولی ثبت میشود. اگر اتصال پیش از خواندن درخواست رد شده باشد، null. |
targetHost | ✓ | null | نام میزبان هدف (اگر مستقیم به IP وصل شده باشد، همان IP). اگر پیش از تعیین هدف رد شده باشد، null. |
targetIp | ✓ | null | IP حلشده هدف. اگر به هدف وصل نشده باشد، null. |
targetPort | ✓ | null | پورت هدف. اگر پیش از تعیین هدف رد شده باشد، null. |
targetInfo | ✓ | null | قالب قدیمی: targetIp:targetPort. |
clientPort | ✓ | null | پورت مبدأ کلاینت شما. |
gateIp | ✓ | null | آدرس پروکسی (ورودی) که به آن وصل میشوید؛ معمولاً همان host در فهرست پروکسی. IP خروجی شما نیست. |
gatePort | ✓ | null | پورت پروکسیای که به آن وصل میشوید. |
egressIp | ✓ | null | همان IP واقعی که ترافیک شما از آن به اینترنت خارج میشود؛ آدرسی که سایت هدف میبیند. در هر اتصال ثبت نمیشود و اگر نباشد null است (در رکوردهای پیش از 17 سپتامبر 2026 همیشه null). |
extIp | ✓ | null | نام قدیمی؛ همان مقدار egressIp. |
latencyMs | ✓ | null | تأخیر برقراری اتصال به هدف، بر حسب میلیثانیه. اگر اندازهگیری نشده باشد null است؛ 0 نیست. |
totalBytes | ✓ | null | bytesIn + bytesOut. |
slot | ✓ | null | شماره اسلات پورت سفارش. در رکوردهای پیش از 17 سپتامبر 2026، null. |
کدهای نتیجه
فقط ISP، Datacenter و Gaming. توضیحات، متنهایی هستند که میتوانید به مشتریانتان نشان دهید. ممکن است کدهای جدیدی اضافه شوند؛ کد ناشناخته را خطا در نظر بگیرید.
| result | errorCode | HTTP | دسته | level | معنا |
|---|---|---|---|---|---|
0 | 00000 | 200 | success | connect | اتصال موفق |
100 | 00100 | 407 | client | auth | نام کاربری یا رمز عبور نادرست است |
101 | 00101 | 403 | client | auth | آدرس IP شما برای این سفارش مجاز نیست |
102 | 00102 | 400 | client | error | قالب درخواست نادرست است |
103 | 00103 | — | client | error | این دستور/پروتکل پشتیبانی نمیشود |
104 | 00104 | 403 | policy | error | اجازه دسترسی به آدرس هدف را ندارید |
105 | 00105 | 403 | policy | quota | سهمیه تمام شده است |
106 | 00106 | 429 | policy | quota | محدودیت اتصال پر شده است |
107 | 00107 | 403 | policy | error | پورت هدف مسدود شده است |
200 | 00200 | 502 | upstream | error | سرور هدف در دسترس نبود |
201 | 00201 | — | client | disconnect | اتصال توسط کلاینت بسته شد (خطای سرویس نیست) |
— | — | — | unknown | error | کد ناشناخته؛ آن را خطا در نظر بگیرید |
دستههای نتیجه
| resultCategory | معنا |
|---|---|
success | اتصال برقرار شد. |
client | ناشی از سمت کلاینت: اطلاعات ورود یا مجوز IP، قالب درخواست، دستور پشتیبانینشده یا بسته شدن اتصال توسط کلاینت. |
policy | سیاست استفاده یا محدودیت حساب: هدف مسدود، سهمیه، اتصال همزمان، پورت بسته. |
upstream | اتصال به هدف برقرار نشد؛ دوباره تلاش کنید. |
unknown | کد ناشناخته (یا رکورد ناموفقی متعلق به پیش از 17 سپتامبر 2026). |
فیلتر کردن
ok، result، category، request_id، client_ip، egress_ip، target_host، service،udp، slot، port و min_latency_ms فقط در این انواع معتبرند. status_group در اینجا 400 برمیگرداند.
status_group (2xx، 4xx، 5xx) فقط در این انواع معتبر است. ip در اینجا در آدرس هدف یا کلاینت جستجو میشود. ارسال پارامتری مخصوص خانواده ISP، 400 invalid_request برمیگرداند؛ details.field پارامتر را مشخص میکند.
یک پارامتر ناشناخته یا بازه زمانیای که آغازش پس از پایانش باشد نیز 400 برمیگرداند. همه پارامترها در نقطه پایانیلاگها آمدهاند.
فهرست ناقص
meta.partial در هر پاسخ برمیگردد. اگر true باشد، ممکن است فهرست ناقص باشد: در خانواده ISP رکوردهای قدیمی در آن لحظه قابل خواندن نبودهاند و درMobile/Residential فقط جدیدترین رکوردها برگشتهاند. کمی بعد دوباره تلاش کنید. اگر مخزن لاگ موقتاً در دسترس نباشد، 503 service_unavailable برمیگردد.
رکوردهای پیش از 17 سپتامبر 2026
رکوردهای سیستم لاگ قدیمی چگونه برمیگردند
سیستم لاگ ISP، Datacenter و Gaming در 17 سپتامبر 2026 نوسازی شد. رکوردهای قدیمیتر هم در فهرست برمیگردند (پس از رکوردهای جدید)، اما فیلدهایی که در آن سیستم وجود نداشتند null هستند: requestId، result، errorCode، egressIp، extIp، latencyMs و slot. در این رکوردها level فقط connect یا error و resultCategory فقط success یا unknown است؛ id یک شناسه پایدار و مشتقشده است.
فیلترهایی که فقط بر فیلدهای سیستم جدید تکیه دارند (ok، result، category، request_id، egress_ip، target_host،udp، slot، port، min_latency_ms) و جستجوی بخشی از آدرس در پارامتر ip فقط رکوردهای 17 سپتامبر 2026 و پس از آن را برمیگردانند. خط زمانی لاگ و شمارندههای مصرف در جزئیات سرویس نیز فقط سیستم جدید را پوشش میدهند.
اگر رکوردهای قدیمی در آن لحظه قابل خواندن نباشند، پاسخ باز هم برمیگردد اما meta.partial برابر true میشود. در همین حالت، در تاریخچه مصرف meta.availableبرابر false برمیگردد.
تغییرات ناسازگار با نسخه قبلی
extIpاکنون IP خروجی واقعی است (همانegressIp). پیشتر آدرس پروکسیای را که به آن وصل میشدید در خود داشت؛ آن آدرس اکنون درgateIp+gatePortاست.parentInfoحذف شد.- در رکوردهای ISP،
idاکنون همانrequestIdاست (ULID). timestampاکنون لحظه بسته شدن اتصال است و دقت آن ثانیه است.levelاکنون مقادیرauth،quotaوdisconnectرا هم میگیرد.- هر رکورد با همان مجموعه ثابت کلیدها برمیگردد. کلیدهای جدیدی اضافه شدند:
requestId،result،gateIp،egressIp،latencyMsو دیگر کلیدها. proxyTypeاکنون فقطhttpیاsocksاست (همانservice)؛ مقدار ناشناختهnullبرمیگردد.- در خانواده ISP، مقدار
sourceدر نقطههای پایانی مصرف اکنونlogsاست. - در لاگهای Mobile/Residential،
bytesInوbytesOutجابهجا برمیگشتند. اکنون در همه انواعbytesInبایتهای دانلودشده وbytesOutبایتهای آپلودشده است (از جمله رکوردهای گذشته).
در درخواست پشتیبانی، requestId را بفرستید
وقتی درباره یک اتصال کمک میخواهید، مقدار requestId آن رکورد را بفرستید؛ تیم پشتیبانی دقیقاً همان اتصال را با آن پیدا میکند. خودتان هم میتوانید همان اتصال را با پارامترrequest_id جستجو کنید. این همان request_id پاسخهای خطا نیست: آن یکی درخواست API شما را شناسایی میکند و این یکی یک اتصال پروکسی را.