محلل الروابط وفاحصها
الصق رابطًا كاملاً واحدًا أو أكثر (كل رابط في سطر) لتفصيل كل منها إلى البروتوكول والمضيف والمسار وسلسلة الاستعلام والجزء (fragment)، مع فك ترميز كل معامل استعلام.
الصق رابطًا كاملاً واحدًا أو أكثر (كل رابط في سطر) لتفصيل كل منها إلى البروتوكول والمضيف والمسار وسلسلة الاستعلام والجزء (fragment)، مع فك ترميز كل معامل استعلام.
لا يمكن للرابط أن يحتوي بأمان إلا على الحروف والأرقام ومجموعة صغيرة من الرموز (- _ . ~). أما كل ما عدا ذلك، بما في ذلك المسافات وعلامات الترقيم والأحرف غير الإنجليزية، فيجب تمثيله بالترميز بالنسبة المئوية قبل أن يتمكن من الانتقال داخل الرابط.
يستبدل الترميز بالنسبة المئوية الحرف بعلامة النسبة المئوية متبوعة بقيمته السداسية العشرية المكوّنة من رقمين، باستخدام UTF-8 لأي حرف خارج نطاق ASCII الأساسي. فتتحول المسافة إلى %20، وعلامة العطف إلى %26، ويمكن أن يتحول حرف مُنقّط أو غير لاتيني إلى عدة تسلسلات %XX متتالية، لأن UTF-8 يمثّله بأكثر من بايت واحد.
لبعض الأحرف مثل ? و& و= و# و/ معنى خاص في بنية الرابط: فهي تحدد بداية سلسلة الاستعلام، أو تفصل بين المعاملات، أو تشير إلى بداية الجزء (fragment). إذا كانت بياناتك تحتاج إلى أن تحتوي على أحد هذه الأحرف كقيمة لا كجزء من البنية، فقم بترميزه أولاً، وإلا فقد يخطئ المتصفح أو الخادم في تحديد أين ينتهي جزء من الرابط ويبدأ الجزء التالي.
يعكس فك الترميز هذه العملية: فهو يقرأ كل تسلسل %XX ليحوّله مرة أخرى إلى الحرف (أو البايت) الذي يمثّله، وهو بالضبط ما تقوم به الأداة أعلاه.
| الحرف | المشفّر | أين يُستخدم |
|---|---|---|
| مسافة | %20 | فاصل بين الكلمات داخل القيمة |
| ! | %21 | |
| " | %22 | |
| # | %23 | يبدأ الجزء (fragment) |
| % | %25 | يبدأ تسلسلاً مشفّرًا بالنسبة المئوية |
| & | %26 | يفصل بين معاملات الاستعلام |
| ' | %27 | |
| ( | %28 | |
| ) | %29 | |
| + | %2B | غالبًا ما يُقرأ كمسافة داخل سلسلة الاستعلام |
| , | %2C | |
| / | %2F | يفصل بين أجزاء المسار |
| : | %3A | يأتي بعد مخطط الرابط (scheme)، مثل https: |
| ; | %3B | |
| = | %3D | يحدد قيمة معامل الاستعلام |
| ? | %3F | يبدأ سلسلة الاستعلام |
| @ | %40 | |
| [ | %5B | |
| ] | %5D |
ينسخ أحد الطلاب عنوان ويب من نموذج على الإنترنت فيرى نصًا مثل science%20project%20notes. ويفحص مطوّر مبتدئ طلب واجهة برمجة تطبيقات فيكتشف أن علامة العطف الموجودة داخل قيمة بحث تظهر بصيغة %26. الرابط يعمل، لكنه صعب القراءة وصعب تصحيحه.
تعيد أداة فك ترميز الروابط تحويل التسلسلات المشفّرة بالنسبة المئوية إلى الأحرف المقابلة لها. فمثلًا، تتحول %20 عادةً إلى مسافة، بينما تتحول %26 إلى علامة عطف.
يفيد فك الترميز في فهم الروابط، وفحص معاملات الاستعلام، ودراسة طريقة ترميز الويب، وتشخيص الطلبات ذات الصياغة الخاطئة. ويجب القيام بذلك بحذر لأن الأحرف المحجوزة قد تغيّر بنية الرابط بعد فك ترميزها.
لا تحدد هذه الأداة ما إذا كانت الوجهة آمنة أو صحيحة أو مصرَّحًا بها. فهي تغيّر فقط طريقة تمثيل الأحرف المشفّرة. ويظل على الطلاب والمطوّرين فحص المضيف والمسار والمعاملات والقيم بعد فك ترميزها بأنفسهم.
تستخدم الروابط أحرفًا معينة للفصل بين أجزائها. فقد تبدأ علامة الاستفهام سلسلة الاستعلام، وقد تفصل علامة العطف بين المعاملات، وقد تحدد علامة الرقم (#) جزءًا (fragment).
عندما يجب أن يظهر أحد هذه الأحرف كبيانات لا كفاصل بنيوي، يمكن ترميزه بالنسبة المئوية. تُتبع علامة النسبة المئوية برقمين سداسيَي عشر يمثلان قيمة بايت.
| القيمة المشفّرة | الحرف بعد فك الترميز | المعنى الشائع |
|---|---|---|
%20 |
مسافة | تفصل بين الكلمات داخل قيمة ما |
%21 |
! |
علامة تعجب |
%23 |
# |
علامة رقم أو مؤشر جزء (fragment) |
%26 |
& |
علامة عطف أو فاصل استعلام |
%2B |
+ |
علامة زائد |
%2F |
/ |
شرطة مائلة أو فاصل مسار |
%3A |
: |
نقطتان رأسيتان |
%3D |
= |
علامة يساوي أو فاصل معاملات |
%3F |
? |
علامة استفهام أو مؤشر استعلام |
لا تُفرّق الأحرف السداسية العشرية في تسلسلات النسبة المئوية بين الأحرف الكبيرة والصغيرة، لذا فإن %2F و%2f تمثلان البايت نفسه.
تأمّل هذا المثال:
https://example.edu/search?q=water%20cycle&level=grade%206#results
أجزاؤه الرئيسية هي:
httpsexample.edu/searchq=water%20cycle&level=grade%206resultsتتحول قيم الاستعلام بعد فك الترميز إلى "water cycle" و"grade 6". يجب عدم الخلط بين علامة العطف البنيوية التي تفصل بين المعاملات وعلامة عطف مشفّرة داخل إحدى القيم.
غالبًا ما يتسبب المطوّرون في مشكلات بفك ترميز رابط كامل بينما كان ينبغي فك ترميز مكوّن واحد فقط. فقد تختلف أدوار الأحرف المحجوزة باختلاف موضع ظهورها.
لنفترض أن استعلامًا يحتوي على:
?topic=research%26writing
تمثّل القيمة المشفّرة:
research&writing
علامة العطف هنا جزء من قيمة الموضوع. فإذا فُكّ ترميز الاستعلام بأكمله ثم حُلّل بشكل خاطئ، فقد يُخطأ في فهم علامة العطف على أنها فاصل يُدخل معاملًا آخر.
يقوم التطبيق الموثوق بتحليل الرابط وفق بنيته، وفك ترميز كل مكوّن باستخدام واجهة برمجة تطبيقات مناسبة للروابط، بدلًا من استخدام عمليات استبدال نصية عشوائية.
يفحص الطلاب:
https://example.edu/library?topic=space%20science
يحددون المضيف والمسار واسم المعامل والقيمة المشفّرة.
تتحول القيمة space%20science إلى space science. ويشرح الطلاب سبب عدم كتابة مسافة حقيقية عادةً بشكل مباشر داخل رابط مُشارَك.
يقدّم المعلم:
?title=Design%20%26%20Technology
العنوان بعد فك الترميز هو Design & Technology. يلاحظ الطلاب أن علامة العطف المشفّرة تنتمي إلى العنوان لا أنها تفصل بين معاملات.
يستخدم الطلاب أداة ترميز الروابط لتحضير قيمة جديدة، ثم يفكون ترميزها ويقارنون النتيجة.
يحتوي أحد التسلسلات على رمز هروب مئوي غير مكتمل مثل %2. يحدد الطلاب سبب توقّع رقمين سداسيَي عشر بعد علامة النسبة المئوية.
ينسخ طالب رابط بحث في مكتبة يحتوي على عدة كلمات مشفّرة. يصعب تفسير الرابط الظاهر.
يقوم الطالب بفك ترميز قيم الاستعلام ويتأكد من مصطلحات البحث والمرشحات التي أُدرجت. ويجري التحقق من المضيف قبل فتح الرابط.
يساعد هذا الطالب على فهم كيفية نقل موقع ويب لمعلومات البحث بين الصفحات.
يرسل مطوّر مبتدئ طلبًا يحتوي على عنوان دورة يتضمن علامة عطف. يستقبل الخادم العنوان كمعاملين منفصلين.
يفحص المطوّر الطلب الخام فيكتشف أن علامة العطف لم تُرمَّز كبيانات. تُحضَّر القيمة باستخدام واجهة برمجة تطبيقات قياسية للروابط، ويُعاد اختبارها.
تساعد أداة فك الترميز على تفسير الطلب، لكن الحل الدائم يستخدم معالجة بنيوية للروابط بدلًا من الاستبدال اليدوي.
يستلم معلم رابطًا لمستند صفي، لكن الوجهة تفيد بتعذر العثور على الملف.
يُفحص الرابط ويُفكّ ترميزه. يحتوي اسم الملف على شرطة مائلة ربما عُوملت كفاصل مسار، أو أن مسافة نُسخت بشكل خاطئ.
يطلب المعلم رابط مشاركة جديدًا من مالك المستند بدلًا من تعديل عنوان خاص غير مألوف بشكل أعمى.
ينشئ الطلاب نموذج بحث بسيطًا ويراقبون الرابط بعد إرسال نص يحتوي على مسافات وعلامات ترقيم.
يفكون ترميز قيم المعاملات ويقارنونها بمُدخل النموذج الأصلي. ويناقش الصف سبب قيام المتصفحات بترميز القيم قبل وضعها في رابط.
لا يُستخدم في هذا التمرين أي كلمات مرور حقيقية أو سجلات طلاب أو ردود خاصة.
يحتوي رابط نشرة إخبارية مدرسية على عدة معاملات تتبّع. يرغب المعلم في معرفة المعلومات المضمَّنة قبل مشاركته.
يُفصَل الرابط إلى معاملات وتُفَكّ ترميز قيمها. يمكن إزالة قيم التتبّع غير الضرورية فقط إذا لم يؤدِّ ذلك إلى تعطيل الوجهة المطلوبة.
يُختبَر الرابط النهائي بدلًا من افتراض أنه يعمل بعد تعديل يدوي.
يختبر صف حاسوب عبارة قصيرة غير إنجليزية داخل رابط. تحتوي النتيجة المشفّرة على عدة تسلسلات مئوية لأن أحرف UTF-8 قد تستخدم عدة بايتات.
يفك الطلاب ترميز التسلسل كاملًا ويقارنونه بالعبارة الأصلية. قد يؤدي حذف بايت واحد مشفّر بالنسبة المئوية إلى ظهور حرف بديل أو نص غير صالح.
يُظهر هذا النشاط أن الحرف الواحد الظاهر لا يقابل دائمًا بايتًا واحدًا مشفّرًا.
يتوقّع مطوّر مسافة لكنه يرى %2520. يمثّل التسلسل %25 علامة نسبة مئوية، فتُنتج عملية فك ترميز واحدة %20، وقد تنتج عملية أخرى مسافة.
يتتبّع المطوّر الموضع الذي رُمّزت فيه القيمة مرتين. ويُصحَّح تدفق البيانات بدلًا من فك ترميز كل مُدخل بشكل متكرر.
يحتوي رابط على رابط آخر مشفّر داخل معامل مثل redirect أو next.
يفك المستخدم ترميز القيمة كنص عادي ويتحقق من مضيف الوجهة الفعلي قبل فتحها. لا ينبغي الوثوق بعنوان مشفّر لمجرد صعوبة قراءة وجهته النهائية.
| المُدخل | الترميز المحتمل | الأداة المناسبة | مثال بعد فك الترميز |
|---|---|---|---|
lesson%20notes |
ترميز الروابط بالنسبة المئوية | فك ترميز الروابط | lesson notes |
<p> |
كيانات HTML | فك ترميز HTML | <p> |
SGVsbG8= |
Base64 | فك ترميز Base64 | Hello |
u003F |
رمز هروب يونيكود | محلل JSON أو محلل مخصص للغة | ? |
استخدم أداة فك ترميز HTML لمراجع الكيانات، وأداة فك ترميز Base64 فقط عندما يكون معروفًا أن البيانات تستخدم هذه الصيغ.
تُمثَّل المسافات عادةً بـ %20. وفي ترميز استعلامات النماذج، قد تُفسَّر علامة الزائد أيضًا كمسافة.
وهذا يخلق فرقًا مهمًا:
class%20notes إلى class notes.class+notes إلى class notes في سياق استعلام نموذج.%2B.استخدم طريقة فك الترميز المصممة للمكوّن والصيغة المحددَين. فقد لا يعامل أداة فك ترميز المسارات وأداة فك ترميز استعلامات النماذج علامة الزائد بالطريقة نفسها.
يعمل الترميز بالنسبة المئوية على مستوى البايتات. فقد يُمثَّل الحرف الواقع خارج نطاق ASCII الأساسي بعدة بايتات مشفّرة.
فمثلًا، قد يظهر حرف مُنقّط أو حرف عربي كتسلسل من عدة رموز هروب مئوية. ويجب أن تبقى كل البايتات المطلوبة بترتيبها الصحيح وأن تُفسَّر باستخدام ترميز الأحرف الصحيح.
إذا احتوى الناتج على رموز بديلة، تحقق مما يلي:
قد تغيّر الأحرف المحجوزة البنية بعد فك ترميزها. افصل الرابط إلى مكوّناته وافك ترميز القيمة المقصودة فقط.
قد يحوّل فك الترميز المتكرر بيانات كانت آمنة إلى فواصل فعّالة أو مسارات غير متوقعة. تتبّع سبب وجود عدة طبقات من الترميز.
استبدال %20 بمسافات لا يعالج جميع الأحرف المشفّرة أو تسلسلات UTF-8 أو المُدخلات ذات الصياغة الخاطئة أو قواعد علامة الزائد. استخدم في الشيفرة محلل روابط بنيويًا أو واجهة برمجة تطبيقات قياسية.
افك ترميزها أولًا كنص. افحص المخطط واسم المضيف والمسار والمعاملات قبل أن تقرر زيارتها.
يمكن أن تمثّل كل من %26 و& علامة عطف في سياقات مختلفة. اختر أداة فك الترميز بناءً على التمثيل الفعلي.
يجب أن تُتبَع علامة النسبة المئوية برقمين سداسيَي عشر. قد تشير التسلسلات غير المكتملة أو غير الصالحة إلى مُدخل تالف.
قد تظهر الروابط في سجل تصفّح المتصفح والسجلات وأدوات التحليل ولقطات الشاشة والرسائل المُشارَكة. ينبغي عدم وضع بيانات اعتماد حساسة داخل سلاسل الاستعلام.
قد تحتوي القيم بعد فك ترميزها على أحرف ذات معنى خاص. فقد تؤثر شرطة مائلة مفكوكة الترميز على مسار ما، وقد تغيّر علامة عطف المعاملات، وقد تتحول الأقواس الزاويّة إلى وسوم عند إدراجها بشكل غير صحيح في صفحة ويب.
ينبغي على التطبيقات:
فك الترميز ليس تعقيمًا للبيانات. فهو يكشف الأحرف الممثَّلة لكنه لا يحدد ما إذا كانت آمنة لاستخدامها في HTML أو مسارات الملفات أو استعلامات قواعد البيانات أو عمليات إعادة التوجيه.
قد يحتوي الرابط على مصطلحات بحث ومعرّفات مستندات وعناوين بريد إلكتروني وأكواد صفوف وأسماء ملفات وبيانات تتبّع ومعلومات أخرى. يجعل فك الترميز هذه المعلومات أسهل قراءة، لكنه لا يزيلها.
لا تلصق روابط مدرسية خاصة أو رموز إعادة تعيين أو روابط موقّعة أو عناوين سجلات طلاب أو بيانات مصادقة في أداة خارجية. استبدل القيم الحساسة بأمثلة خيالية أثناء الدروس وعروض تصحيح الأخطاء التوضيحية.
قبل مشاركة لقطة شاشة لرابط مفكوك الترميز، أزل أسماء الحسابات والمضيفين الخاصين والرموز ومعرّفات المستندات.
ينبغي أن يفضّل المطوّرون المبتدئون واجهات برمجة تطبيقات بنيوية للروابط. ففي JavaScript، يمكن فحص قيمة استعلام على النحو التالي:
const url = new URL(
"https://example.edu/search?q=water%20cycle"
);
const query = url.searchParams.get("q");
console.log(query);
// water cycle
يحلل هذا الأسلوب الرابط ويعيد قيمة المعامل بعد فك ترميزها. وهو غالبًا أكثر أمانًا ووضوحًا من تقسيم السلسلة الكاملة يدويًا عند كل علامة استفهام وعلامة عطف وعلامة يساوي.
استخدم أداة ترميز الروابط لتحضير نص لاستخدامه كمكوّن رابط، ثم فك ترميزه للتحقق من مثال صفّي.
إذا كان المُدخل يحتوي على كيانات مثل &lt; أو &quot;، استخدم أداة فك ترميز HTML. أما بالنسبة إلى نص Base64 معروف، فاستخدم أداة فك ترميز Base64.
يمنع اختيار أداة فك الترميز الصحيحة تحويلات غير ضرورية ويجعل تصحيح الأخطاء أكثر موثوقية.
يحوّل فك ترميز الروابط التسلسلات المشفّرة بالنسبة المئوية إلى أحرف مقروءة. ويساعد الطلاب على فهم عناوين الويب، ويساعد المطوّرين على فحص قيم الاستعلام وطلبات واجهات برمجة التطبيقات والنصوص متعددة اللغات وعمليات إعادة التوجيه ومشكلات الترميز المزدوج.
الطريقة الأكثر أمانًا هي تحديد مكوّن الرابط، وفك ترميز ما هو ضروري فقط، والاحتفاظ بالمُدخل الأصلي. عامِل النتيجة كبيانات لا تزال بحاجة إلى التحقق.
يسهل التحقيق في رابط مقروء بعد فك ترميزه، لكن ذلك لا يجعله آمنًا أو صحيحًا تلقائيًا. تحقق من بنيته ووجهته ومعاملاته وخصوصيته وترميز الأحرف المقصود قبل استخدامه.