فاحص المحتوى المختلط

بمساعدة الخادم جديد أمان الإنترنت والخصوصية

أدخل رابط صفحة تعمل عبر HTTPS فيجلب خادم متقن ملف HTML الخاص بها مرة واحدة، أو الصق الشيفرة بنفسك. تُقرأ الصفحة نصاً فقط، فلا يُشغَّل فيها شيء ولا يُحمَّل أي مورد، ثم يُستخرج كل عنوان http:// تشير إليه ويُصنَّف وفق مواصفة W3C للمحتوى المختلط: محتوى نشط يحجبه المتصفح، أو محتوى خامل يرقّيه إلى https://، مع كشف التوجيه upgrade-insecure-requests إن وُجد. أما وجهات النماذج وأهداف meta refresh التي تقود إلى http:// فتُعرض على حدة، لأنها انتقالات بين الصفحات لا يحجبها المتصفح بوصفها محتوى مختلطاً.

الخصوصية: يرسل خادم متقن طلبات الاختبار الصغيرة والثابتة الموصوفة في هذه الصفحة إلى المضيف الذي تحدده، ولا يُخزَّن أي شيء. استخدمه فقط مع الأنظمة المصرّح لك باختبارها.
جارٍ تحميل الأداة…

ما المحتوى المختلط ولماذا تحجبه المتصفحات؟

المحتوى المختلط مورد تحمّله صفحة https:// عبر http:// العادي. ويستطيع أي طرف على مسار الشبكة قراءة ذلك المورد أو استبداله، فسكربت واحد عبر http:// كفيل بتسليم الصفحة المشفّرة لمهاجم؛ ولذلك تُلزم مواصفة W3C للمحتوى المختلط المتصفحاتِ بحجب السكربتات وملفات الأنماط والإطارات وما يشبهها من المحتوى «القابل للحجب»، وبطلب الصور والصوت والفيديو عبر https:// بدلاً من http://.

كيفية استخدام فاحص المحتوى المختلط

  1. أدخل عنوان الصفحة بصيغة https://، أو الصق شيفرة HTML (من view-source أو ملف محفوظ أو قالب)، ومع الشيفرة الملصوقة أدخل رابط الصفحة أيضاً لتُحلّ الروابط النسبية.
  2. اضغط «افحص الصفحة».
  3. أصلح أولاً الصفوف الموسومة «يحجبها المتصفح»: هذه الموارد لا تُحمَّل أصلاً في صفحة HTTPS.
  4. ثم انقل الإشارات الخاملة ووجهات النماذج إلى https://، وأعد الفحص حتى تفرغ القائمة.

مزايا فاحص المحتوى المختلط

  • يسرد كل مورد http:// تشير إليه صفحة https://: السكربتات وملفات الأنماط والصور وبدائل srcset والإطارات والصوت والفيديو والخطوط وكائنات الإضافات ووجهات النماذج وقيم url() في CSS المضمّن ووجهات meta refresh
  • يصنّف كل مورد فرعي محتوى نشطاً (قابلاً للحجب) أو خاملاً (قابلاً للترقية) كما تعرّفه مواصفة W3C للمحتوى المختلط، ويعرض وجهات النماذج وأهداف meta refresh على حدة بوصفها انتقالات، ويذكر ما يفعله المتصفح الحالي بكل منها
  • يكشف upgrade-insecure-requests في ترويسة Content-Security-Policy أو في وسم meta، وهو التوجيه الذي يجعل المتصفح يعيد كتابة روابط الموارد الفرعية وإرسال النماذج إلى https://؛ ولا يظهر في HTML الملصوق إلا وسم meta، فإن غاب كانت الإجابة «غير معروف»
  • يحلّ الروابط النسبية مقابل عنوان الصفحة وأول عنصر base، فيكشف base href يشير إلى http://، وتأخذ الروابط المجرّدة من البروتوكول (//host/path) بروتوكول الصفحة كما في المتصفح
  • يعمل على صفحة حيّة يجلبها خادم متقن أو على HTML تلصقه — قالباً أو صفحة محفوظة أو صفحة خلف تسجيل الدخول
  • يقرأ HTML نصاً فقط: لا يُنفَّذ شيء من الصفحة ولا يُحمَّل أي مورد، لا على خادم متقن ولا في متصفحك
  • يعدّ الإشارة المكررة مرة واحدة مع عدد مرات ظهورها، ويصدّر القائمة بصيغة CSV

المدخلات والمخرجات

المدخلات

  • رابط الصفحة — صفحة https:// المراد فحصها (ويُقرأ المضيف المجرد على أنه https://). يرسل خادم متقن طلب GET واحداً بمجموعة ترويسات ثابتة تعرّف بوسيط متقن (User-Agent MutqanTools-Relay/1.0)، ويتّبع حتى 5 عمليات إعادة توجيه.
  • HTML الملصوق — شيفرة الصفحة بديلاً عن الجلب؛ عند وجودها لا يُرسل شيء، ويُستخدم رابط الصفحة (إن أُدخل) لحلّ الروابط النسبية فقط.

المخرجات

  • الملخّص — هل الصفحة HTTPS، وكم رابط مورد قُرئ، وكم إشارة غير آمنة نشطة (قابلة للحجب) وخاملة (قابلة للترقية)، وكم نموذجاً أو meta refresh يقود إلى http://، وهل upgrade-insecure-requests مضبوط («غير معروف» مع HTML ملصوق بلا وسم meta).
  • الإشارات غير الآمنة — صف لكل رابط http:// مميز: نوعه، والعنصر والخاصية اللذان يرد فيهما، وما يفعله المتصفح به، وعدد مرات ظهوره.
  • ماذا يعني هذا — نتيجة كل نوع من الملاحظات وما يجب تغييره.
  • تفاصيل الجلب — للصفحة المجلوبة: الرابط المطلوب والنهائي والحالة وContent-Type وحجم HTML المقروء والعنوان المحلول ومدة الجلب.

مثال على فاحص المحتوى المختلط

صفحة متجر فيها ست إشارات غير آمنة

الإدخال:

Page URL: https://www.example.com/shop
<link rel="stylesheet" href="http://cdn.example.net/css/theme.css">
<script src="http://widgets.example.org/chat.js"></script>
<img src="http://images.example.net/banner.jpg" alt="Sale">
<video src="http://media.example.net/intro.mp4" poster="//media.example.net/intro.jpg"></video>
<iframe src="http://maps.example.org/embed?q=riyadh"></iframe>
<form action="http://www.example.com/subscribe" method="post">

النتيجة:

الصفحة HTTPS · روابط الموارد المقروءة 7 · نشط (قابل للحجب) 3 · خامل (قابل للترقية) 2 · النماذج وعمليات التحويل 1 · upgrade-insecure-requests غير معروف — لم تُقرأ ترويسات الرد
ملف أنماط · link[href] · http://cdn.example.net/css/theme.css · يحجبها المتصفح
سكربت · script[src] · http://widgets.example.org/chat.js · يحجبها المتصفح
إطار · iframe[src] · http://maps.example.org/embed?q=riyadh · يحجبها المتصفح
الصورة · img[src] · http://images.example.net/banner.jpg · يرقّيها المتصفح الحالي إلى https:// ويُسقطها إن فشل ذلك
صوت أو فيديو · video[src] · http://media.example.net/intro.mp4 · يرقّيها المتصفح الحالي إلى https:// ويُسقطها إن فشل ذلك
وجهة نموذج · form[action] · http://www.example.com/subscribe · يحذّر المتصفح قبل إرسال النموذج
(صورة الغلاف //media.example.net مجرّدة من البروتوكول فهي آمنة)

كيف تقرأ نتائج فاحص المحتوى المختلط

الصفوف الموسومة «يحجبها المتصفح» معطّلة فعلاً لدى كل زائر يستخدم متصفحاً حديثاً: السكربت أو ملف الأنماط أو الخط أو الإطار لا يُحمَّل، فتفشل بصمت التنسيقات أو الميزات أو العناصر المضمّنة المعتمدة عليه.

الصفوف الخاملة تظهر عادةً لأن المتصفحات الحالية ترقّي الصور والصوت والفيديو إلى https://، لكن بشرط وجود الملف نفسه عبر HTTPS؛ وإلا غابت الصورة أو الفيديو، وفي المتصفحات القديمة تفقد الصفحة قفلها الآمن.

القائمة الفارغة تعني أنه لم يُعثر على رابط http:// في HTML المقروء، لا أن الصفحة خالية من المحتوى المختلط؛ فقد تُدرج السكربتات روابط http:// بعد تحميل الصفحة.

إذا ظهرت الصفحة نفسها على أنها HTTP فالنتيجة ليست عن المحتوى المختلط أصلاً: الصفحة كلها غير مشفّرة، ونقلها إلى HTTPS يأتي أولاً.

صفوف النماذج وmeta refresh لا تُحجب: فبعد تحذير المتصفح يُرسل النموذج ما كتبه الزائر دون تشفير، وينقل meta refresh الزائر إلى صفحة غير مشفّرة، لذا يجب نقلهما إلى https:// أيضاً.

متى تستخدم فاحص المحتوى المختلط

  • ترحيل موقع من HTTP إلى HTTPS والعثور على روابط http:// المكتوبة صراحةً في القوالب والمحتوى.
  • معرفة سبب عدم ظهور ملف أنماط أو خط أو خريطة مضمّنة في نسخة HTTPS من الصفحة.
  • مراجعة محتوى نظام إدارة المحتوى الذي يلصق روابط صور http:// مطلقة داخل المقالات.
  • فحص الصفحة قبل تفعيل upgrade-insecure-requests أو HSTS للتأكد من أن كل مورد يعمل عبر HTTPS.

استكشاف الأخطاء وإصلاحها

  • النتيجة فارغة مع أن وحدة التحكم تعرض تحذيرات Mixed Content: هذه الموارد تضيفها JavaScript بعد التحميل أو تشير إليها ملفات CSS خارجية. ابحث عن «http://» داخل السكربتات وملفات الأنماط.
  • «الرد ليس صفحة HTML»: الرابط يشير إلى ملف أو واجهة API أو وجهة إعادة توجيه ليست HTML. أدخل عنوان الصفحة نفسها.
  • الروابط النسبية في HTML الملصوق تُحلّ إلى مضيف خاطئ: أدخل رابط الصفحة أيضاً، أو تأكد من أن الشيفرة تتضمن عنصر base الخاص بها.
  • الصفحة تتطلب تسجيل الدخول أو تحجب الطلبات الآلية: افتحها في متصفحك واعرض المصدر والصق HTML بدلاً من الرابط.

الأسئلة الشائعة حول فاحص المحتوى المختلط

ما الفرق بين المحتوى المختلط النشط والخامل؟

النشط هو ما يستطيع تغيير الصفحة أو قراءتها: السكربتات وملفات الأنماط والإطارات والخطوط وكائنات الإضافات، ويحجبه المتصفح كلياً إن جاء عبر http:// في صفحة HTTPS. والخامل هو الصور والصوت والفيديو، وتطلبه المتصفحات الحالية عبر https:// بدلاً من http://، فإن لم يكن الملف متاحاً عبر HTTPS لم يظهر.

لماذا اختفى القفل الآمن من شريط العنوان رغم أن موقعي يعمل بـ HTTPS؟

غالباً لأن الصفحة ما زالت تحمّل مورداً عبر http://، كصورة قديمة في مقال أو ودجت خارجية. افحص الصفحة هنا لترى الرابط المسؤول، ثم غيّره إلى https:// بعد التأكد من أن الملف متاح عبر HTTPS.

هل يحمّل الفحص الموارد أو يشغّل سكربتات الصفحة؟

لا. يجلب خادم متقن ملف HTML وحده ويُعيده إلى متصفحك، ويُقرأ نصاً فقط. لا يُشغَّل أي سكربت، ولا يُطلب أي مورد من الموارد المذكورة، فلا تتصل الأداة بالجهات الخارجية التي تشير إليها الصفحة.

خرجت القائمة فارغة لكن وحدة التحكم في المتصفح تعرض تحذيرات Mixed Content، فلماذا؟

لأن تلك الموارد تضيفها JavaScript بعد تحميل الصفحة، أو تشير إليها ملفات CSS خارجية، والأداة لا تقرأ إلا HTML الصفحة. ابحث عن «http://» داخل السكربتات وملفات الأنماط، أو استخدم تبويب Console في أدوات المطوّر.

هل تكفي إضافة upgrade-insecure-requests لحل المشكلة؟

تجعل المتصفح يطلب كل مورد http:// ويرسل كل نموذج عبر https:// تلقائياً، لكنها لا تُنشئ النسخة الآمنة من الملف؛ فإن لم يكن المورد متاحاً عبر HTTPS فشل تحميله. هي شبكة أمان أثناء الترحيل، والحل الدائم أن تكتب الروابط بـ https:// أو بصيغة نسبية.

ملاحظات تقنية

يتبع التصنيف مواصفة W3C للمحتوى المختلط (Mixed Content): السكربتات وملفات الأنماط والإطارات والخطوط وكائنات الإضافات والتحميلات المسبقة من نوع fetch محتوى «قابل للحجب» (نشط) ترفض المتصفحات تحميله عبر http:// في صفحة https://، أما الصور والصوت والفيديو فمحتوى «قابل للترقية» (خامل) تطلب المواصفة Mixed Content Level 2 من المتصفحات طلبه عبر https:// بدلاً من ذلك. ووجهات النماذج وأهداف meta refresh انتقالات تستثنيها المواصفة من حجب المحتوى المختلط؛ وتترك للمتصفح، إذا أُرسل نموذج إلى http://، أن يحذّر أو يحجب، والمتصفحات الحالية تحذّر.

تُحلّ الروابط كما يشترط معيار WHATWG URL ومعيار HTML: مقابل عنوان الصفحة، أو أول عنصر base إن وُجد؛ والرابط المجرّد من البروتوكول يرث بروتوكول https من الصفحة؛ وتُتجاهل روابط data: وblob: وabout: وjavascript:.

يُقرأ upgrade-insecure-requests (مواصفة W3C Upgrade Insecure Requests) من ترويسة Content-Security-Policy في رد الصفحة المجلوبة، ومن وسم meta http-equiv="Content-Security-Policy" في HTML؛ ولا ترويسة رد مع HTML الملصوق، فإن غاب وسم meta كانت الإجابة هناك «غير معروف». ومع وجود التوجيه يعيد المتصفح كتابة كل رابط مورد فرعي وكل إرسال نموذج إلى https:// قبل الطلب، والانتقال إلى صفحة أخرى إن بقي على مضيف الصفحة نفسه، فتصبح القائمة قائمةً بما يجب أن يكون متاحاً عبر HTTPS لا بما يُحجب.

يُفحص HTML بقارئ وسوم متسامح لا بمتصفح: يقرأ الخصائص وبدائل srcset وخصائص style المضمّنة وكتل style، ويتوقف عند 5,000 وسم أو 2 ميغابايت من النص. وتُقرأ الصفحة المجلوبة حتى 512 كيلوبايت يعيدها خادم متقن.

الحدود ومنهجية القياس

لا يُفحص إلا HTML الذي قُرئ. أما الموارد التي تُدرجها JavaScript، أو تشير إليها ملفات الأنماط الخارجية، أو تُحمَّل باستدعاءات fetch/XHR، ومحتوى الإطارات، فخارج الفحص.

يجلب خادم متقن الصفحة مرة واحدة من شبكة Cloudflare دون كوكيز أو تسجيل دخول؛ والصفحة التي تختلف بحسب المستخدم أو الجهاز أو المنطقة قد تشير إلى موارد أخرى عند الزوار الحقيقيين. ولا يُقرأ إلا أول 512 كيلوبايت من HTML.

يعتمد ما يفعله المتصفح بالمحتوى الخامل على إصداره: يصف الجدول المتصفحات الحالية التي تطبّق الترقية في Mixed Content Level 2، أما القديمة فتحمّل المحتوى الخامل عبر http:// مع تحذير.

الأمان والخصوصية

في وضع الرابط يُرسل الرابط إلى خادم متقن فيجلب الصفحة مرة واحدة ويعيد HTML إلى متصفحك لإجراء الفحص، ولا يُخزَّن شيء. وفي وضع اللصق لا تغادر الشيفرة متصفحك.

يُعامَل HTML نصاً: لا تعمل سكربتاته ولا يُطلب أي مورد يذكره، فلا يتصل الفحص بالجهات الخارجية التي تشير إليها الصفحة.

المراجع

  • Mixed ContentW3Cيعرّف المحتوى المختلط، وأي الطلبات تحجبها المتصفحات (القابلة للحجب) وأيها ترقّيها إلى https:// (القابلة للترقية).
  • Mixed content — MDNMDN Web Docs (Mozilla)كيف تتعامل المتصفحات اليوم مع كل نوع من المحتوى المختلط، ورسائل وحدة التحكم التي تظهر، وطرق الإصلاح.
  • Upgrade Insecure RequestsW3Cتوجيه CSP المسمى upgrade-insecure-requests، الذي يجعل المتصفح يعيد كتابة طلبات http:// في الصفحة إلى https:// قبل إرسالها.