فحص ETag ضعيف أو قوي
الصق ETag واعرف فورًا إن كان ضعيفًا أم قويًا: الوسم W/"abc123" ضعيف وقيمته الداخلية abc123، أما "v1-hash" فقوي. ويُشار إلى غياب علامات الاقتباس أو كتابة w/ بحرف صغير بدل تخمينهما. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- قيمة ETag
- W/"abc123"
- القوة
- weak
- وسم معتم
- abc123
- وسم بين علامتي اقتباس
- "abc123"
- البادئة
- W/
يؤكد المُتحقق القوي تطابقًا تامًا بايتًا بايت؛ أما المُتحقق الضعيف، المُعلَّم بالبادئة W/ الحساسة لحالة الأحرف قبل opaque-tag بين علامتي اقتباس، فيؤكد التكافؤ الدلالي فقط. يؤدي سوء تفسير تلك البادئة أو قبول رمز بلا اقتباس إلى قرارات خاطئة في If-Match وIf-None-Match، وإصابات ذاكرة مؤقتة قديمة، وتحديثات شرطية ضائعة. تقبل هذه القدرة قيمة ترويسة ETag واحدةحدة (أو سطر ETag: كاملًا)، وتتحقق من أن opaque-tag محاط بعلامتي اقتباس مزدوجتين وفق RFC 9110، وتصنف المُتحقق ضعيفًا أو قويًا، وتعيد أجزاء الوسم المُطبَّعة.
معنى ETag الضعيف والقوي وفق RFC 9110
entity-tag سلسلة غير شفافة بين علامتي اقتباس يربطها الخادم بتمثيل محدد لمورد. عندما يقصد الخادم مُتحققًا قويًا يُصدر الوسم المقتبس فقط، مثل "v3-a1b2c3". وعندما يقصد مُتحققًا ضعيفًا يسبق ذلك الوسم بالرمز الحساس لحالة الأحرف W/ فيكون القيمة الكاملة W/"v3-a1b2c3".
يجوز استخدام المُتحققات القوية لإعادة التحقق من الذاكرة المؤقتة ولقرارات المحتوى الجزئي أو النطاق الآمنة التي تتطلب تطابقًا تامًا. تضمن المُتحققات الضعيفة فقط أن التمثيلات متكافئة لأغراض التخزين المؤقت؛ ولا يجوز اعتبارها دليلًا على تطابق كل بايت. تقارن ترويسات الطلب الشرطي مثل If-Match وIf-None-Match وIf-Range الوسوم التي يرسلها العميل مع وسم الخادم الحالي وفق هذه القواعد.
إذا أزال عميل أو وسيط البادئة W/ سهوًا، يُعامل وسم ضعيف كقوي وقد يُسمح خطأً بطلب نطاق أو كتابة شرطية. وإذا أُسقطت علامات الاقتباس اختلف الوسطاء والمحللون حول نهاية الرمز. وُجد هذا الفاحص حتى تتحققوا من سلسلة ETag مخزّنة أو مسجّلة قبل مقارنتها أو توثيقها أو إدخالها في نظام آخر يتوقع الشكل الصارم للـ RFC.
عقد الإدخال وحقول الاستجابة وقواعد الرفض
يمكن لصق entity-tag مجردًا أو سطر ترويسة كامل مثل ETag: W/"abc". تُزال المسافات البادئة والزائدة؛ وتُزال بادئة اسم ETag: الاختيارية دون تمييز حالة الأحرف. يجب أن تكون القيمة المتبقية "opaque" لمُتحقق قوي أو W/"opaque" لضعيف.
يجب أن تكون W كبيرة؛ ويُرفض w/ الصغيرة لأن RFC 9110 يعرّف علامة الضعف بأنها حساسة لحالة الأحرف. يجب أن يبدأ opaque-tag وينتهي بعلامتي اقتباس مزدوجتين، وألا يحتوي اقتباسًا مزدوجًا داخليًا غير مُهرَّب، وأن يستخدم فقط أحرف etagc: ASCII قابل للطباعة باستثناء الاقتباس، مع obs-text. مثال: "v1-hash" يعطي strong true وstrength strong.
حالات الاستخدام
تدقيق ترويسات CDN والبوابات
الصقوا عينات ETag من الإنتاج وتأكدوا أي الاستجابات تستخدم مُتحققات ضعيفة مقابل قوية قبل ضبط قواعد الذاكرة المؤقتة وإعادة التحقق.
الدعم وفرز ملفات HAR
صنّفوا ETags من ملفات HAR أو التذاكر في أداة المتصفح المجانية لتشخيص أخطاء الطلبات الشرطية دون سكربتات مخصصة.
الأسئلة الشائعة
كيف أعرف إن كان ETag ضعيفًا أم قويًا؟
أرسلوا قيمة ETag (مثل W/"abc" أو "abc"). إذا بدأت بالبادئة W/ الحساسة لحالة الأحرف قبل الوسم المقتبس فـ strength هي weak؛ وإلا فوسم مقتبس بشكل صحيح يكون strong.
ماذا يحدث إذا لم يكن ETag بين علامتي اقتباس؟
تتطلب RFC 9110 إحاطة opaque-tag بعلامتي اقتباس مزدوجتين؛ تُرفض الرموز بلا اقتباس بدل تخمينها.
هل البادئة W/ حساسة لحالة الأحرف؟
نعم. فقط W/ الكبيرة هي علامة الضعف. تُرفض قيم مثل w/"tag" حتى لا تُعامل بادئة غير مطابقة بصمت كقوية أو ضعيفة.
هل يمكن لصق سطر ترويسة ETag: كامل؟
نعم. يُزال اسم ETag: البادئ دون تمييز حالة الأحرف؛ ثم يُصنَّف entity-tag المتبقي.
متى يهم أن يكون ETag ضعيفًا أو قويًا؟
عندما تقارن ذاكرة تخزين مؤقت أو عميل الوسوم لمعرفة ما إذا تغيّر شيء. الوسم القوي يثبت تطابقًا تامًا بايتًا ببايت ويصلح للتنزيل الجزئي أو الكتابة الآمنة، أما الضعيف فيدل فقط على أن نسختين متكافئتان لأغراض التخزين المؤقت.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/etag-weak-strong-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"etag":"W/\"abc123\""}'const res = await fetch("https://api.kit.forhosting.com/web/etag-weak-strong-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"etag": "W/\"abc123\""
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/etag-weak-strong-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"etag": "W/\"abc123\""
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/etag-weak-strong-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"etag":"W/\\"abc123\\""}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"etag":"W/\"abc123\""}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/etag-weak-strong-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"etag": "W/\"abc123\""
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.etag_weak_strong_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
timeout_sec | 30 |
max_crawl_pages | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تُعلم وسوم الكيان في HTTP (ETags) ذاكرات التخزين المؤقت والعملاء بما إذا كان تمثيلان لمورد واحد متطابقين. تفشل علامات الاقتباس غير الصالحة والقيم الفارغة والبادئات الضعيفة غير المطابقة لـ RFC بـ invalid_input بدل تصنيف خاطئ صامت. المنطق التحليلي الخالص ذاته يغذي أداة المتصفح المجانية ومسار API المدفوع مسبقًا.
عقد الإدخال وحقول الاستجابة وقواعد الرفض
أرسلوا جسم JSON بحقل سلسلة إلزامي اسمه etag (تُقبل الأسماء البديلة value وheader وtag وentity_tag). عند النجاح تتضمن الاستجابة etag (الشكل المطبَّع مع W/ والاقتباس أو الاقتباس وحده)، وقيمتي weak وstrong المنطقيتين، وstrength كسلسلة weak أو strong، وopaque_tag (المحتوى الداخلي بلا اقتباس)، وquoted_tag، وprefix (فارغ أو W/)، وvalid true، وملاحظة قصيرة عن فئة المُتحقق. الإدخال الناقص والسلاسل الفارغة بعد إزالة اسم الترويسة والوسوم بلا اقتباس مثل abc123 وعلامات الاقتباس غير المتطابقة والأحرف غير القانونية والبادئات الضعيفة الخاطئة كلها ترفع invalid_input ولا تُحاسب. مثال: W/"abc123" يعطي weak true وstrength weak وopaque_tag abc123.
أين يكتسب فاحص قوة ETag قيمته
تستفيد أدوات المطوّرين ومحللات HAR وأدلة الدعم من عنصر واجهة مجاني في المتصفح يصنّف ETag ملصوقًا دون إرسال القيمة إلى مسجّل طرف ثالث. لا يستهلك فشل التحقق الرصيد. أبقوا opaque-tag غير شفاف في وثائق المنتج: هذه النقطة الطرفية لا تحسب تجزئة جسمكم نيابة عنكم؛ إنها تصنّف فقط صيغة الوسم التي لديكم، وثبّتوا الـ goldens عند دمج الفاحص في CI. غالبًا ما تجمع مراجعات إعداد بوابات API وCDN عينات ترويسات استجابة وتحتاج إجابة سريعة وحتمية عما إذا كان كل ETag ضعيفًا أو قويًا قبل كتابة سياسات الذاكرة المؤقتة. يمكن لاختبارات العقود الآلية لخدمات REST أن تؤكد أن مستندات JSON ذات الإصدارات تُصدر وسومًا قوية بينما تستخدم صفحات HTML المُصوَّرة وسومًا ضعيفة عمدًا، فتفشل البناء عند انحراف علامات الاقتباس أو البادئة W/. تكتسب مواقع المحتوى التي تستهدف استعلامات مثل فاحص etag ضعيف قوي أداة حية يطابق مسار العميل المجاني فيها مسار API المدفوع على الوحدة الخالصة ذاتها. ولأن التنفيذ parse خالص من المستوى A، تكلف كل مكالمة ناجحة السعر الأساسي المنشور $0.002 بلا رموز نموذج ولا شبكة صادرة.
حالات التكامل
عقود API وفحوصات CI
أكدوا في الاختبارات أن خدمةً تُصدر ETags قوية أو ضعيفة بين علامتي اقتباس بشكل صحيح، وأن خط الأنابيب يفشل عند غياب الاقتباس أو بادئة W/ خاطئة.
أسئلة تقنية
كم تكلفة فحص ETag الضعيف أو القوي؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ ولا يُحاسب الإدخال غير الصالح.