محلل الروابط وفاحصها
الصق رابطًا كاملاً واحدًا أو أكثر (كل رابط في سطر) لتفصيل كل منها إلى البروتوكول والمضيف والمسار وسلسلة الاستعلام والجزء (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. العنوان يعمل، لكن قراءته وتتبّع أخطائه متعبان.
أداة فك ترميز URL تعيد المتتاليات المرمّزة بالنسبة المئوية إلى الرموز التي تقابلها. فمثلًا يتحوّل %20 عادةً إلى مسافة، ويتحوّل %26 إلى علامة عطف.
يفيد فك الترميز في فهم الروابط، وفحص معاملات الاستعلام، ودراسة الترميز في الويب، وتشخيص الطلبات المعطوبة. وهو يحتاج إلى تأنٍّ، لأن الرموز المحجوزة قد تغيّر بنية العنوان بعد فكّها.
الأداة لا تحكم على الوجهة بأنها آمنة أو صحيحة أو مصرّح بها. كل ما تفعله هو تغيير طريقة تمثيل الرموز المرمّزة. أما المضيف والمسار والمعاملات والقيم المفكوكة فيبقى على الطالب والمبرمج أن يفحصها بنفسه.
تستعمل العناوين رموزًا بعينها للفصل بين أجزائها. فعلامة الاستفهام قد تبدأ سلسلة الاستعلام، وعلامة العطف قد تفصل بين المعاملات، وعلامة الشباك قد تحدّد جزءًا داخل الصفحة.
وحين يلزم أن يظهر أحد هذه الرموز بوصفه بيانات لا فاصلًا بنيويًا، يمكن ترميزه بالنسبة المئوية: تأتي علامة النسبة المئوية ثم رقمان ست عشريان يمثّلان قيمة بايت.
| القيمة المرمّزة | الرمز بعد الفك | المعنى الشائع |
|---|---|---|
%20 |
مسافة | تفصل بين الكلمات داخل القيمة |
%21 |
! |
علامة تعجب |
%23 |
# |
علامة شباك أو مؤشّر جزء |
%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. فيلاحظ الطلاب أن علامة العطف المرمّزة تنتمي إلى العنوان ولا تفصل بين معاملين.
يستعمل الطلاب أداة ترميز URL لتجهيز قيمة جديدة، ثم يفكّون ترميزها ويقارنون النتيجة.
تحتوي إحدى المتتاليات على هروب مئوي ناقص مثل %2. ويعلّل الطلاب لماذا يُنتظر رقمان ست عشريان بعد علامة النسبة المئوية.
ينسخ طالب رابط بحث من فهرس المكتبة وفيه كلمات عدّة مرمّزة، فيصعب عليه تفسير العنوان الظاهر.
يفكّ قيم الاستعلام فيتبيّن أيّ كلمات البحث وأيّ المرشّحات كانت مُدرجة. ويفحص المضيف قبل فتح الرابط.
وهكذا يفهم كيف ينقل الموقع معلومات البحث من صفحة إلى أخرى.
يرسل مبرمج مبتدئ طلبًا فيه اسم مقرّر يتضمّن علامة عطف، فيستقبل الخادم الاسم على أنه معاملان منفصلان.
يفحص الطلب الخام فيكتشف أن علامة العطف لم تُرمَّز بوصفها بيانات. فيجهّز القيمة بواجهة قياسية للعناوين ويعيد التجربة.
أداة الفك تساعده على فهم الطلب، لكن الإصلاح الدائم يكون بمعالجة العنوان معالجة بنيوية لا باستبدال يدوي.
تصل إلى معلّمة رابط لمستند صفّي، لكن الوجهة تردّ بأن الملف غير موجود.
يُفحص العنوان ويُفكّ ترميزه، فيتبيّن أن في اسم الملف شرطة مائلة ربما عوملت كفاصل مسار، أو أن مسافة نُسخت على نحو خاطئ.
فتطلب المعلّمة من صاحب المستند رابط مشاركة جديدًا بدل أن تعبث بعنوان خاص لا تعرفه.
يبني الطلاب نموذج بحث بسيطًا ثم ينظرون إلى العنوان بعد إرسال نص فيه مسافات وعلامات ترقيم.
يفكّون قيم المعاملات ويقارنونها بما كتبوه في النموذج. ويناقش الصف سبب ترميز المتصفّحات للقيم قبل وضعها في العنوان.
ولا تُستعمل في التمرين كلمات مرور حقيقية ولا سجلّات طلاب ولا إجابات خاصة.
يحمل رابط في نشرة المدرسة عدّة معاملات تتبّع، وتريد المعلّمة أن تعرف ما فيه من معلومات قبل مشاركته.
يُفصل العنوان إلى معاملات وتُفكّ قيمها. ويمكن حذف قيم التتبّع غير الضرورية بشرط ألّا يؤدّي ذلك إلى تعطيل الوجهة المطلوبة.
ثم يُجرَّب الرابط النهائي بدل افتراض أنه يعمل بعد التعديل اليدوي.
يجرّب صفّ الحاسوب عبارة قصيرة بغير الإنجليزية داخل عنوان. وتأتي النتيجة المرمّزة بمتتاليات مئوية عدّة، لأن رموز UTF-8 قد تشغل أكثر من بايت واحد.
يفكّ الطلاب المتتالية كاملة ويقارنونها بالعبارة الأصلية. وحذف بايت مرمّز واحد قد يُنتج رمز استبدال أو نصًا غير صالح.
ويبيّن النشاط أن الرمز الظاهر الواحد لا يقابله دائمًا بايت مرمّز واحد.
ينتظر مبرمج مسافة فيرى %2520. والمتتالية %25 تمثّل علامة النسبة المئوية، فيُنتج تمرير واحد للفك %20، وقد يُنتج تمرير آخر مسافة.
فيتتبّع الموضع الذي رُمّزت فيه القيمة مرّتين، ويصحّح مسار البيانات بدل أن يفكّ كل مُدخل مرارًا وتكرارًا.
يحمل رابط عنوانًا مرمّزًا آخر داخل معامل مثل redirect أو next.
يفكّ المستخدم القيمة كنص عادي ويتحقّق من المضيف الفعلي قبل الفتح. فالعنوان المرمّز لا يستحقّ الثقة لمجرّد أن وجهته النهائية صعبة القراءة.
| المُدخل | الترميز المرجّح | الأداة المناسبة | مثال بعد الفك |
|---|---|---|---|
lesson%20notes |
ترميز مئوي للعناوين | فك ترميز URL | lesson notes |
<p> |
كيانات HTML | فك ترميز HTML | <p> |
SGVsbG8= |
Base64 | فك ترميز Base64 | Hello |
u003F |
هروب Unicode | محلّل 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
يحلّل هذا الأسلوب العنوان ويعيد قيمة المعامل مفكوكة. وهو في العموم أأمن وأوضح من تقطيع السلسلة كاملة يدويًا عند كل علامة استفهام وعطف ويساوي.
استعمل أداة ترميز URL لتجهيز نص ليكون جزءًا من عنوان، ثم افكك ترميزه للتحقّق من مثال صفّي.
وإن كان المُدخل يحوي كيانات مثل &lt; أو &quot; فاستعمل أداة فك ترميز HTML. أما النص المعروف أنه Base64 فله أداة فك ترميز Base64.
واختيار أداة الفك الصحيحة يجنّبك تحويلات لا لزوم لها ويجعل تتبّع الأخطاء أوثق.
فك ترميز العناوين يحوّل المتتاليات المرمّزة بالنسبة المئوية إلى رموز مقروءة. وهو يعين الطلاب على فهم عناوين الويب، ويعين المبرمجين على فحص قيم الاستعلام وطلبات الواجهات البرمجية والنصوص متعدّدة اللغات وإعادة التوجيه ومشكلات الترميز المزدوج.
وأسلم طريقة هي تحديد جزء العنوان، وفكّ ما يلزم وحده، والاحتفاظ بالمُدخل الأصلي. وعامِل النتيجة بوصفها بيانات ما زالت بحاجة إلى تحقّق.
الرابط المفكوك المقروء أسهل في الفحص، لكنه لا يصير بذلك آمنًا أو صحيحًا تلقائيًا. فافحص بنيته ووجهته ومعاملاته وجانب الخصوصية فيه وترميز المحارف المقصود قبل استعماله.