محلّل traceparent — W3C Trace Context
كفى عدّ الخانات الست عشرية. محلّل traceparent مجاني وأونلاين — يعمل داخل متصفحك ولا يرفع شيئاً. معرّف التتبّع والمقطع، بتات trace-flags الثمانية، tracestate، Datadog/X-Ray/B3.
- الإصدار
00- معرّف التتبّع
4bf92f3577b34da6a3ce929d0e0e4736- معرّف الأصل (المقطع)
00f067aa0ba902b7- رايات التتبّع
01
| البت | القناع | الاسم | الحالة |
|---|---|---|---|
| 0 | 0x01 | sampled | 1 |
| 1 | 0x02 | random-trace-id | 0 |
| 2 | 0x04 | reserved | 0 |
| 3 | 0x08 | reserved | 0 |
| 4 | 0x10 | reserved | 0 |
| 5 | 0x20 | reserved | 0 |
| 6 | 0x40 | reserved | 0 |
| 7 | 0x80 | reserved | 0 |
اقرأ هذه بعملية «و» على مستوى البتات. ومقارنة البايت كاملاً بالقيمة 01 تُبلغ خطأً عن أي تتبّع يحمل معه بتاً محجوزاً.
- x-datadog-trace-id
11803532876627986230- x-datadog-tags: _dd.p.tid
4bf92f3577b34da6- x-datadog-parent-id
67667974448284343- AWS X-Ray trace ID
1-4bf92f35-77b34da6a3ce929d0e0e4736- b3 (single header)
4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-1- X-B3-TraceId
4bf92f3577b34da6a3ce929d0e0e4736- X-B3-SpanId
00f067aa0ba902b7- X-B3-Sampled
1
يحمل Datadog البتات الأربع والستين الدنيا من معرّف التتبّع كسلسلة عشرية، والبتات العليا بالست عشري في وسم. وتمرير القيمة كاملة بطول 128 بت كعدد عشري هو السبب الكلاسيكي لعجز معرّف تتبّع من سجلاتك عن إيجاد أي شيء في الواجهة.
يضمّن معرّف X-Ray طابعاً زمنياً بطول 32 بت؛ أما معرّف تتبّع W3C فلا يحمل طابعاً زمنياً إطلاقاً. والتاريخ في الأسفل لا معنى له إلا إذا كان المعرّف قد نشأ فعلاً في X-Ray.
| # | المفتاح | القيمة | الحالة |
|---|---|---|---|
| 1 | rojo | 00f067aa0ba902b7 | OK |
| 2 | congo | t61rcWkgMzE | OK |
تشريح حقول الترويسة
| الحقل | خانات ست عشرية | بايتات | المعنى | قيمة غير صالحة |
|---|---|---|---|---|
| version | 2 | 1 | إصدار الصيغة. دائماً 00 اليوم؛ والقيمة ff ممنوعة. | ff |
| trace-id | 32 | 16 | يعرّف التتبّع كاملاً من طرف إلى طرف. | أصفار بالكامل |
| parent-id | 16 | 8 | يعرّف مقطع المستدعي لا الطلب نفسه. | أصفار بالكامل |
| trace-flags | 2 | 1 | حقل من 8 بتات — اقرأه بتاً بتاً، لا كقيمة منطقية. | — |
قيم trace-flags: شرح 00 و01 و02 و03
| ست عشري | ثنائي | sampled | random-trace-id | المعنى |
|---|---|---|---|---|
| 00 | 00000000 | 0 | 0 | اختار الأعلى ألّا يأخذ عيّنة — انظر إلى المستدعي لا إلى خدمتك. |
| 01 | 00000001 | 1 | 0 | مسجَّل بشكل طبيعي. وهذا ما تراه في أغلب الأحيان. |
| 02 | 00000010 | 0 | 1 | معرّف تتبّع عشوائي معلَن، لكن بلا عيّنة. |
| 03 | 00000011 | 1 | 1 | مسجَّل، ومعرّف التتبّع معلَن أنه عشوائي بانتظام. |
bit 0 — سجّل المستدعي هذا التتبّع. وخلوّه يعني أنه اختار عمداً ألّا يسجّله.
bit 1 — المستوى الثاني: أقصى 7 بايتات يمين معرّف التتبّع عشوائية بانتظام.
bit 2-7 — محجوز. يجب تجاهله وتصفيره في الطلبات الصادرة.
بُني مباشرةً على توصية W3C Trace Context وتوصية المستوى الثاني المرشّحة، مع تغطية المحلّل باختبارات وحدة لكل صيغة صالحة وغير صالحة تسمّيها المواصفة.
ما هي ترويسة traceparent؟
traceparent هي ترويسة HTTP التي تنقل تتبّعاً موزّعاً من خدمة إلى التي تليها. قبل توحيدها كان كل مزوّد تتبّع ينشر السياق في ترويسته الخاصة، فيفقد الطلب هويته عند الحدود متى عبر الأنظمة. وقد حسمت مواصفة W3C Trace Context ذلك بصيغة واحدة صغيرة عن قصد: version-trace-id-parent-id-trace-flags، أربعة حقول ست عشرية تصلها شرطات، بطول 55 محرفاً إجمالاً في الإصدار الحالي.
ولكل حقل مهمة واحدة. فـversion دائماً 00 اليوم، والقيمة ff ممنوعة تماماً. وtrace-id ستة عشر بايتاً تعرّف الطلب كاملاً من طرف إلى طرف — وتبقى ثابتة عبر كل قفزة. وparent-id ثمانية بايتات تعرّف مقطع المستدعي المباشر، ولذلك تتغيّر عند كل قفزة بخلاف trace-id. أما بايت trace-flags فهو موضع أكثر الالتباس: يبدو قيمةً منطقية لأن 01 هي القيمة الأشيع بفارق كبير، لكنه في الحقيقة ثمانية بتات. البت 0 هو sampled. والبت 1، المضاف في Trace Context Level 2، هو random-trace-id، ويؤكّد أن أقصى سبعة بايتات يمين معرّف التتبّع عشوائية بانتظام كي تستطيع الأنظمة في الأسفل أخذ عيّنات أو التجزئة بناءً عليها. أما البتات الستة الباقية فمحجوزة، وهذا بالضبط سبب وجوب قراءة الحقل بعملية «و» على مستوى البتات لا بمقارنة تساوٍ.
وتحمل إلى جانبها ترويسة مرافقة اسمها tracestate أزواج مفتاح وقيمة خاصة بالمزوّدين، بسقف اثنين وثلاثين عضواً. ويفسّر هذا السقف عرضاً محيّراً: بيانات مزوّد موجودة عند الطرف ومفقودة بعد قفزات قليلة، لأن الوسطاء يبدؤون بإسقاط المدخلات متى تجاوزت القائمة الحدّ. وقد صارت الترويسة عالمية فعلاً بعد أن تبنّاها OpenTelemetry، وهذه الصفحة تفكّها كلها — الحقول والبتات وأعضاء tracestate والمعرّفات المكافئة لصيغ النشر الأخرى — دون إرسال أي شيء إلى أي مكان.
# The header as it travels on the wire
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE
# Read the four fields apart
# version 00
# trace-id 4bf92f3577b34da6a3ce929d0e0e4736 (16 bytes, whole request)
# parent-id 00f067aa0ba902b7 (8 bytes, calling span)
# trace-flags 01 (bit 0 set = sampled)
# Send one yourself
$ curl -H 'traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01' \
https://example.com/api الميزات الرئيسية
كل حقل منفصل وقابل للنسخ
يحصل كل من version وtrace-id وparent-id وtrace-flags على صفّه الخاص وزر نسخه الخاص، فيصبح انتزاع معرّف تتبّع من 32 محرفاً إلى استعلام نقرةً واحدة بدل سحب دقيق بالفأرة.
قراءة trace-flags كثمانية بتات
يُبسَط بايت الرايات إلى مواضعه الثمانية كلها مع أقنعتها الست عشرية. البت 0 هو sampled، والبت 1 هو راية random-trace-id في المستوى الثاني، وتُعرض البتات المحجوزة بدل إسقاطها بصمت.
تحويل إلى Datadog وX-Ray وB3
البتات الأربع والستون الدنيا كمعرّف تتبّع عشري لـDatadog، والبتات العليا كوسم يسافر معه، وصيغة X-Ray على هيئة 1-{8}-{24}، وتخطيطا B3 بترويسة واحدة وبترويسات متعددة — كلها محسوبة بـBigInt فلا يفيض شيء.
تشخيص لا مجرّد حكم
يُشرَح معرّف التتبّع المكوّن من أصفار على أنه تتبّع لم يُهيَّأ قط، ويُشرَح خلوّ بت sampled على أنه قرار اتُّخذ في الأعلى. ومعرفة أيّهما أمامك هي عادةً جلسة تصحيح الأخطاء كلها.
tracestate مع سقف الاثنين والثلاثين عضواً
تُسرد الأعضاء مع تحقّق مستقل من مفتاح كل عضو وقيمته، وعدّاد جارٍ مقابل حدّ المواصفة — وهو الحدّ الذي يفسّر اختفاء بيانات المزوّدين بعد قفزات قليلة في الأسفل.
لا شيء يغادر متصفحك
التحليل عمليات سلاسل نصية بسيطة وحساب BigInt بلا اعتماديات وبلا نداءات شبكة، ويتحقّق منه اختبار تعاقدي آلي مع كل بناء. ويستعمل زر نسخ الرابط جزء الرابط الذي لا يُرسَل أبداً.
أمثلة traceparent مفكوكة
مثال المواصفة نفسها، مفكوكاً
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
version 00 · trace-id 4bf92f3577b34da6a3ce929d0e0e4736 · parent-id 00f067aa0ba902b7 · trace-flags 01 (sampled)
أربعة حقول تفصلها شرطات، بطول 55 محرفاً إجمالاً في الإصدار 00. يعرّف trace-id الطلب كاملاً وهو يعبر كل خدمة؛ أما parent-id — ويسمّى غالباً معرّف المقطع أو span ID — فيعرّف المستدعي المباشر وحده، ولهذا يتغيّر عند كل قفزة بينما لا يتغيّر trace-id. والرقم 01 في النهاية بايت كامل لا قيمة منطقية: البت 0 مضبوط، أي أن المستدعي سجّل هذا التتبّع.
trace-flags 00 — قرّر المستدعي ألّا يسجّل
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00
ترويسة صالحة · بت sampled خالٍ
هذه الترويسة صالحة تماماً، وهذا هو بيت القصيد. فخلوّ بت sampled تعليمة قادمة من الأعلى لا خلل في خدمتك: من استدعاك قيّم أداة أخذ العيّنات لديه واختار ألّا يسجّل. ومطاردة المقاطع الغائبة داخل إعداداتك أنت في هذه الحالة تلتهم ساعات. والسؤال الصحيح هو: أي خدمة تستدعيك، وترسل مقطعاً أصلاً، وتقرّر ألّا تأخذ عيّنة من هذا التتبّع.
معرّف تتبّع من أصفار يعني أن التتبّع لم يبدأ أصلاً
00-00000000000000000000000000000000-00f067aa0ba902b7-01
غير صالحة — trace-id من أصفار
تعدّ المواصفة trace-id المكوّن من أصفار قيمةً غير صالحة، وتوجب تجاهل traceparent بأكمله. ويجدر معرفة ما يشير إليه عملياً: ليس «تتبّعاً بلا بيانات بعد»، بل حزمة SDK لم تُهيَّأ قط، أو وسيطاً يحقن ترويسة نائبة. وتنطبق القاعدة نفسها على parent-id المكوّن من أصفار.
معرّف التتبّع نفسه بصيغة Datadog
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
x-datadog-trace-id 11803532876627986230 · _dd.p.tid 4bf92f3577b34da6
يحمل Datadog البتات الأربع والستين الدنيا من معرّف تتبّع بطول 128 بت كسلسلة عشرية، ويحمل البتات الأربع والستين العليا بالنظام الست عشري في وسم منفصل. وإذا أدخلت القيمة كاملة بطول 128 بت كعدد عشري خرج لك رقم لا يطابق شيئاً — وهذا بالضبط سبب تكرار هذا التحويل في متتبّعات مشكلات مكتبات التتبّع مرة بعد مرة. والنصف الأدنى هنا هو a3ce929d0e0e4736، و64 بت تتجاوز ما يسع عدد JavaScript، لذا تجري هذه الصفحة الحساب بـBigInt.
كيف تستخدم محلّل traceparent
- 1
الصق ترويسة traceparent
أدخل قيمة الترويسة الخام — مثلاً 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. ويجري الفكّ أثناء الكتابة، فلا يوجد زر تضغطه.
- 2
اقرأ الحقول الأربعة منفصلة
يحصل كل من version وtrace-id وparent-id وtrace-flags على صفّه الخاص مع زر نسخ، فتستطيع انتزاع معرّف التتبّع وحده إلى استعلام دون تحديد 32 محرفاً يدوياً.
- 3
افحص الرايات بتاً بتاً
يُبسَط بايت trace-flags إلى بتاته الثمانية كلها مع أقنعتها، فتظهر راية sampled وراية random-trace-id في المستوى الثاني كلٌّ على حدة بدل أن تختبئا داخل قيمة من محرفين.
- 4
حوّل إلى صيغة منصّتك الخلفية
تُولَّد أسفل الصفحة صيغ Datadog وAWS X-Ray وصيغتا B3 كلتاهما، بما في ذلك معرّف التتبّع العشري من البتات الأربع والستين الدنيا الذي يتوقّعه Datadog والوسم من البتات العليا الذي يسافر معه.
- 5
أضف tracestate وشارك النتيجة
الصق ترويسة tracestate لتُسرد أعضاؤها مع تحقّق مستقل لكل عضو وعدّ مقابل حدّ الاثنين والثلاثين عضواً، ثم استعمل زر نسخ الرابط لالتقاط الحالة بدقّة في رابط تضعه في تذكرة عمل.
أخطاء traceparent الشائعة
مقارنة بايت الرايات كاملاً بالقيمة 01
هذا يعامل حقلاً من ثمانية بتات كتعداد قيم منفصلة. فالتتبّع المأخوذة عنه عيّنة والذي يحمل أيضاً راية random-trace-id في المستوى الثاني تكون رايته 03، فيبلّغ اختبار التساوي عنه بأنه غير مأخوذة عنه عيّنة.
if (traceFlags === 0x01) { record(); } if (traceFlags & 0x01) { record(); } تحويل البتات 128 كلها إلى عدد عشري واحد
يتوقّع Datadog البتات الأربع والستين الدنيا عشرية والبتات العليا ست عشرية في وسم منفصل. وتمرير القيمة كاملة كعدد عشري واحد ينتج معرّفاً لا يطابق شيئاً.
x-datadog-trace-id: 100985939111033328018442752961257817910
x-datadog-trace-id: 11803532876627986230 x-datadog-tags: _dd.p.tid=4bf92f3577b34da6
رفض أي إصدار غير 00
تطلب المواصفة من المحلّلات أن تقرأ ما تعرفه من إصدار أعلى وأن تتسامح مع حقول زائدة في النهاية. والرفض المباشر يبدأ تتبّعاً جديداً ويقطع الرابط عبر الحدود.
if (version !== '00') throw new Error('bad traceparent'); if (version !== '00' && header.length >= 55) { /* parse the known prefix */ } إخراج ست عشري بأحرف كبيرة
القواعد لا تقبل إلا الأحرف الصغيرة. ومعرّف التتبّع بأحرف كبيرة يحمل القيمة الصحيحة ومع ذلك يرفضه مستقبِل ملتزم بالمواصفة، ما يجعله عيباً مزعجاً بوجه خاص لأن العين لا تلتقطه.
traceparent: 00-4BF92F3577B34DA6A3CE929D0E0E4736-00F067AA0BA902B7-01
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
ماذا يمكنك أن تفعل بمحلّل traceparent
- اكتشف لماذا لا يحمل تتبّع أي مقاطع
- الصق الترويسة الواردة واقرأ بت sampled. فإن كان خالياً فالتتبّع لم يكن ليُسجَّل أصلاً، والجواب عند المستدعي لا عند أدوات القياس لديك — تمييز يوفّر وقتاً كبيراً يضيع في مراجعة إعدادات أخذ العيّنات عندك.
- اعثر على تتبّع تعجز منصّتك الخلفية عن إيجاده
- حين لا يعيد معرّف تتبّع منسوخ من سجلات التطبيق أي نتيجة في Datadog، فالصيغة هي الجاني عادةً. حوّله هنا لترى المعرّف العشري من البتات الدنيا الذي تتوقّعه الواجهة البرمجية، ومعه الوسم من البتات العليا الذي يجب أن يرافقه.
- تحقّق من الترويسات التي تحقنها بوابتك
- تولّد الوكلاء وشبكات الخدمات سياق تتبّع عند المدخل. الصق ما وصل فعلاً لتأكيد الطول والست عشري بأحرف صغيرة والمعرّفات غير الصفرية قبل أن تفترض أن العطل في الأسفل.
- أعد إنتاج تتبّع إنتاجي يدوياً
- خذ ترويسة من طلب حقيقي وأعد تشغيلها على نقطة نهاية في بيئة الاختبار لتتبع المسار نفسه. ابنِ الطلب بـمنشئ أوامر cURL والصق الترويسة فيه مباشرة.
- اشرح سياق التتبّع لفريقك
- جدول تشريح الحقول وجدول trace-flags في هذه الصفحة مرجع ساكن تستطيع الإشارة إليه، وتعرض الشرائح الجاهزة كل حالة فشل دون أن يضطر أحد إلى تعطيل خدمة لصنع واحدة.
كيف يعمل مدقّق W3C Trace Context
- قواعد الحقول الأربعة
- version "-" trace-id "-" parent-id "-" trace-flags، كلها ست عشري بأحرف صغيرة. طول version خانتان، وtrace-id اثنتان وثلاثون، وparent-id ستّ عشرة، وtrace-flags خانتان — أي 52 خانة ست عشرية مع ثلاث شرطات، فيصير المجموع 55 محرفاً بالضبط في الإصدار 00. والست عشري بأحرف كبيرة يجعل الترويسة غير صالحة رغم أن القيمة تبدو صحيحة، كما أن trace-id وparent-id المكوّنين من أصفار غير صالحين صراحةً لا فارغين.
- trace-flags حقل بتات
- البت 0 (بقناع 0x01) هو sampled: ضبطه يعني أن المستدعي ربما سجّل بيانات تتبّع. والبت 1 (بقناع 0x02)، المضاف في المستوى الثاني، هو random-trace-id: فحين يُضبط يجب أن تكون أقصى سبعة بايتات يمين trace-id قد اختيرت عشوائياً بتوزيع منتظم، ما يتيح للأنظمة في الأسفل أخذ عيّنات أو التجزئة عليها. أما البتات من 2 إلى 7 فمحجوزة، ويجب تجاهلها عند الاستقبال وتصفيرها في الطلبات الصادرة. ولأن البتات المحجوزة قد تكون حاضرة فيجب اختبار الحقل بعملية «و» على مستوى البتات — إذ إن اختبار التساوي مع 0x01 يُبلغ خطأً عن تتبّع مأخوذة عنه عيّنة لكنه يحمل بتاً محجوزاً.
- التوافق الأمامي مع الإصدارات القادمة
- الإصدار اليوم هو 00 والقيمة ff ممنوعة، لكن المحلّل الذي يرفض كل ما عداهما محلّل خاطئ. فالمواصفة تطلب من المستقبِلين محاولة التحليل حين يكون الإصدار أعلى وتكون الترويسة بطول الصيغة المعروفة على الأقل، فيقرؤون الحقول التي يعرفونها ويتسامحون مع بيانات زائدة في النهاية بدل أن يبدؤوا تتبّعاً جديداً. وهذا المفكّك يتبع تلك القاعدة: الإصدار المستقبلي يُحلَّل بنجاح ويُعلَّم تحذيراً لا خطأً.
- حدود tracestate التي تعضّ في الإنتاج
- 32 عضواً في القائمة على الأكثر — وهذا حدّ نحوي صارم: فإن طالت القائمة عن ذلك صارت الترويسة غير صالحة وطرحها المستقبِلون. وطول كل مفتاح 256 محرفاً كحدّ أقصى ويبدأ بحرف صغير أو رقم؛ ومنذ Level 2 صار الرمز @ محرف مفتاح عادياً لا فاصل مستأجرين. وكل قيمة من محرف واحد إلى 256 محرفاً من ASCII القابل للطباعة، ولا تحتوي فاصلة ولا علامة يساوي أبداً. والمفاتيح المكرّرة غير صالحة، أما الأعضاء الفارغون في القائمة فمسموح بهم صراحةً — فالفاصلة المتخلّفة بعد حذف وسيط لأحد المدخلات تبقى ترويسة صالحة. وبمعزل عن ذلك: على المزوّدين نشر 512 محرفاً على الأقل من الترويسة المدمجة؛ وحين يضطرون إلى التشذيب للبقاء داخل هذه الميزانية فينبغي أن تذهب أولاً المدخلات التي تتجاوز 128 محرفاً — ولهذا تختفي بيانات المزوّد المُسهِب قبل بيانات المزوّد المقتضب.
أفضل ممارسات Trace Context
- اختبر الرايات بعملية «و» على مستوى البتات
- اكتب flags & 0x01 لا flags == 0x01. فستة من البتات الثمانية محجوزة للاستعمال المستقبلي، واختبار التساوي سيبدأ بالإبلاغ الخاطئ عن التتبّعات المأخوذة عنها عيّنات لحظة ظهور أيٍّ منها في الواقع.
- عامل المعرّف المكوّن من أصفار كخط أنابيب معطّل
- ليس قيمة فارغة تُحتمل. ارفض الترويسة، ثم اذهب وابحث عن المكوّن الذي أخفق في تهيئة أداة التتبّع لديه أو الذي يحقن قيمة نائبة.
- انظر إلى الأعلى حين يكون بت sampled خالياً
- تنشر أدوات أخذ العيّنات المعتمدة على الأصل قرار المستدعي. فإذا غابت التتبّعات فحدّد أي خدمة ترسل إليك مقطعاً أصلاً وأخذ العيّنات مطفأ قبل أن تراجع إعداداتك أنت.
- أبقِ tracestate قصيرة
- سقف الاثنين والثلاثين عضواً حدّ نحوي صارم — فبتجاوزه تصير الترويسة غير صالحة. وبمعزل عن ذلك، لا يُضمن نشر أكثر من 512 محرفاً من الترويسة المدمجة، والتشذيب يُسقط أولاً المدخلات التي تتجاوز 128 محرفاً. وأي شيء تريد له أن ينجو من سلسلة نداءات طويلة لا مكان له في tracestate.
- لا تسجّل معرّف تتبّع كعدد JavaScript أبداً
- معرّف التتبّع بطول 128 بت، بل وحتى معرّف Datadog بطول 64 بت، يتجاوزان Number.MAX_SAFE_INTEGER. احتفظ بهما سلاسل نصية، وحوّل بـBigInt حين تضطر إلى الحساب، وإلا أفسدت الخانات الأخيرة بصمت.
أسئلة شائعة عن محلّل traceparent
ما هي ترويسة traceparent؟
ماذا تعني trace-flags 00 في traceparent؟
ما الفرق بين trace-flags بقيم 01 و02 و03؟
لماذا معرّف التتبّع لديّ كلّه أصفار؟
كيف أحوّل معرّف تتبّع W3C إلى معرّف تتبّع Datadog؟
هل تحتوي traceparent على طابع زمني؟
هل تُرفَع الترويسة التي ألصقها هنا إلى أي مكان؟
هل يعمل هذا المفكّك دون اتصال؟
أدوات ذات صلة
عرض جميع الأدوات →منشئ أوامر cURL وبنّاؤها
الويب وAPI
ابنِ أوامر curl في متصفحك — حدد الطريقة والترويسات والمصادقة والجسم، واحصل على أمر جاهز للنسخ فوراً. إعدادات مسبقة لـ Bearer وPOST JSON ورفع الملفات. مجاني وخاص وبلا تسجيل.
مولّد htpasswd — bcrypt وحماية الويب
الويب وAPI
أنشئ مدخلات htpasswd بـ bcrypt وApache MD5 (apr1) وSHA-1 والمزيد. احصل على إعداد Apache وnginx وDocker جاهز للصق. 100% في متصفحك — بدون رفع.
مولّد وسوم Open Graph وميتا
الويب وAPI
أنشئ وسوم Open Graph وبطاقات Twitter ووسوم SEO مع معاينة حية على Google وFacebook وX. مجانية 100% وداخل المتصفح، بدون تسجيل — انسخ الكود والصقه.
مختبر nginx location — لماذا تفوز هذه الكتلة
الويب وAPI
اعرف أي كتلة location يختارها nginx — ولماذا خسرت كل كتلة أخرى. مختبر مجاني لمطابقة =, ^~, ~ و~* يعمل بالكامل داخل متصفحك بلا رفع أي شيء.
فك تشفير AES — يدعم OpenSSL/CryptoJS
أدوات الأمن
فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.
أداة تشفير AES — GCM/CBC/CTR
أدوات الأمن
أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 100% داخل متصفحك؛ لا شيء يُرفع.