मिक्स्ड कंटेंट चेकर

HTTPS पेज का URL डालें, Mutqan सर्वर उसका HTML एक बार लाएगा — या कोड ख़ुद पेस्ट करें। पेज को सिर्फ़ टेक्स्ट की तरह पढ़ा जाता है: न कुछ चलाया जाता है, न कोई रिसोर्स लोड होता है। फिर हर http:// एड्रेस निकालकर W3C की Mixed Content स्पेसिफ़िकेशन के हिसाब से बाँटा जाता है — active कंटेंट जिसे ब्राउज़र ब्लॉक करता है, या passive कंटेंट जिसे वह https:// पर अपग्रेड करता है — और upgrade-insecure-requests मौजूद हो तो वह भी बताया जाता है। http:// पर ले जाने वाले फ़ॉर्म action और meta refresh लक्ष्य अलग दिखाए जाते हैं: ये नेविगेशन हैं, जिन्हें ब्राउज़र मिक्स्ड कंटेंट मानकर ब्लॉक नहीं करते।

गोपनीयता: Mutqan सर्वर इस पेज पर बताई गई छोटी, तय टेस्ट रिक्वेस्ट आपके बताए होस्ट को भेजता है, और कुछ भी स्टोर नहीं होता। इसे सिर्फ़ उन्हीं सिस्टम पर इस्तेमाल करें जिन्हें टेस्ट करने की आपको अनुमति है।
टूल लोड हो रहा है…

मिक्स्ड कंटेंट क्या है और ब्राउज़र इसे क्यों ब्लॉक करते हैं?

मिक्स्ड कंटेंट वह रिसोर्स है जिसे कोई https:// पेज सादे http:// से लोड करता है। नेटवर्क रास्ते पर बैठा कोई भी उसे पढ़ या बदल सकता है, इसलिए http:// से आई एक स्क्रिप्ट भी एन्क्रिप्टेड पेज का नियंत्रण हमलावर को दे सकती है; इसीलिए W3C की Mixed Content स्पेसिफ़िकेशन ब्राउज़र से स्क्रिप्ट, स्टाइलशीट, फ़्रेम जैसे "blockable" कंटेंट को ब्लॉक करवाती है, और इमेज, ऑडियो व वीडियो को https:// से माँगने को कहती है।

मिक्स्ड कंटेंट चेकर कैसे इस्तेमाल करें

  1. पेज का https:// एड्रेस डालें, या उसका HTML पेस्ट करें (view-source, सेव की गई फ़ाइल या टेम्पलेट); पेस्ट किए HTML के साथ पेज का URL भी डालें ताकि relative लिंक resolve हों।
  2. "पेज जाँचें" दबाएँ।
  3. पहले "ब्राउज़र ब्लॉक करते हैं" वाली पंक्तियाँ ठीक करें: ये रिसोर्स HTTPS पेज पर लोड ही नहीं होते।
  4. फिर passive रिसोर्स और फ़ॉर्म action को https:// पर ले जाएँ, और सूची ख़ाली होने तक जाँच दोहराएँ।

मिक्स्ड कंटेंट चेकर की खूबियाँ

  • https:// पेज के हर http:// रिसोर्स की सूची बनाता है: स्क्रिप्ट, स्टाइलशीट, इमेज और srcset विकल्प, फ़्रेम, ऑडियो-वीडियो, फ़ॉन्ट, प्लग-इन ऑब्जेक्ट, फ़ॉर्म action, इनलाइन CSS की url() वैल्यू और meta refresh के लक्ष्य
  • हर सब-रिसोर्स को W3C Mixed Content स्पेसिफ़िकेशन के मुताबिक़ active (blockable) या passive (upgradeable) में बाँटता है, फ़ॉर्म action और meta refresh लक्ष्यों को नेविगेशन के रूप में अलग दिखाता है, और बताता है कि आज का ब्राउज़र हर एक के साथ क्या करता है
  • Content-Security-Policy हेडर या meta टैग में upgrade-insecure-requests पहचानता है — वह निर्देश जिससे ब्राउज़र सब-रिसोर्स URL और फ़ॉर्म सबमिशन को https:// में बदल देता है; पेस्ट किए HTML में सिर्फ़ meta टैग दिख सकता है, इसलिए टैग न हो तो जवाब "अज्ञात" होता है
  • relative URL को पेज के एड्रेस और पहले base एलिमेंट के हिसाब से resolve करता है, ताकि http:// की ओर इशारा करने वाला base href पकड़ में आए, और protocol-relative URL (//host/path) ब्राउज़र की तरह पेज का स्कीम लेते हैं
  • Mutqan सर्वर से लाए गए लाइव पेज पर या पेस्ट किए HTML पर काम करता है — टेम्पलेट, सेव किया पेज, या लॉग-इन के पीछे का पेज
  • HTML को सिर्फ़ टेक्स्ट की तरह पढ़ता है: पेज का कुछ भी न Mutqan सर्वर पर चलता है न आपके ब्राउज़र में, और कोई रिसोर्स लोड नहीं होता
  • दोहराए गए रिसोर्स को एक बार गिनता है, साथ में उसकी गिनती, और सूची CSV में एक्सपोर्ट करता है

इनपुट और आउटपुट

इनपुट

  • पेज URL — जाँचने वाला https:// पेज (सिर्फ़ होस्ट हो तो https:// माना जाता है)। Mutqan सर्वर तय हेडर के साथ एक GET रिक्वेस्ट भेजता है जो Mutqan रिले की पहचान बताते हैं (User-Agent MutqanTools-Relay/1.0), और 5 रीडायरेक्ट तक फ़ॉलो करता है।
  • पेस्ट किया HTML — फ़ेच के बदले पेज का सोर्स; पेस्ट होने पर कुछ नहीं भेजा जाता, और पेज URL (अगर दिया हो) सिर्फ़ relative लिंक resolve करने के काम आता है।

आउटपुट

  • सारांश — पेज HTTPS है या नहीं, कितने सब-रिसोर्स URL पढ़े गए, कितने असुरक्षित रिसोर्स active (blockable) और कितने passive (upgradeable) हैं, कितने फ़ॉर्म और meta refresh http:// पर ले जाते हैं, और upgrade-insecure-requests सेट है या नहीं (बिना meta टैग वाले पेस्ट किए HTML के लिए "अज्ञात")।
  • असुरक्षित रिसोर्स — हर अलग http:// URL की एक पंक्ति: उसका प्रकार, वह एलिमेंट और attribute जिसमें वह है, ब्राउज़र उसके साथ क्या करते हैं, और वह कितनी बार आया।
  • इसका मतलब — हर तरह के नतीजे का असर और क्या बदलना है।
  • फ़ेच विवरण — फ़ेच किए पेज के लिए: माँगा गया और आख़िरी URL, स्टेटस, Content-Type, कितना HTML पढ़ा गया, resolve हुआ एड्रेस और फ़ेच का समय।

मिक्स्ड कंटेंट चेकर का उदाहरण

छह असुरक्षित रिसोर्स वाला एक शॉप पेज

इनपुट:

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 · पढ़े गए सब-रिसोर्स URL 7 · Active (ब्लॉक होने लायक़) 3 · Passive (अपग्रेड होने लायक़) 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:// पर अपग्रेड करते हैं; न मिले तो छोड़ देते हैं
फ़ॉर्म action · form[action] · http://www.example.com/subscribe · फ़ॉर्म भेजने से पहले ब्राउज़र चेतावनी देते हैं
(//media.example.net वाला poster protocol-relative है, इसलिए सुरक्षित)

मिक्स्ड कंटेंट चेकर के नतीजे कैसे पढ़ें

"ब्राउज़र ब्लॉक करते हैं" वाली पंक्तियाँ आज के हर ब्राउज़र में पहले से टूटी हैं: स्क्रिप्ट, स्टाइलशीट, फ़ॉन्ट या फ़्रेम लोड नहीं होता, इसलिए उन पर टिका लेआउट, फ़ीचर या embed चुपचाप फ़ेल होता है।

passive पंक्तियाँ आम तौर पर दिख जाती हैं क्योंकि आज के ब्राउज़र इमेज, ऑडियो और वीडियो को https:// पर अपग्रेड कर देते हैं — पर तभी जब वही फ़ाइल HTTPS पर मौजूद हो। न हो तो इमेज या वीडियो ग़ायब रहता है; पुराने ब्राउज़र में पेज अपना सुरक्षित ताला खो देता है।

ख़ाली सूची का मतलब है कि पढ़े गए HTML में कोई http:// रिसोर्स नहीं मिला — यह नहीं कि पेज मिक्स्ड कंटेंट से मुक्त है। पेज लोड होने के बाद स्क्रिप्ट http:// URL जोड़ सकती हैं।

अगर पेज ख़ुद HTTP बताया गया है तो नतीजा मिक्स्ड कंटेंट का है ही नहीं: पूरा पेज बिना एन्क्रिप्शन के है, और पहले उसे HTTPS पर ले जाना होगा।

फ़ॉर्म और meta refresh वाली पंक्तियाँ ब्लॉक नहीं होतीं: ब्राउज़र की चेतावनी के बाद भी फ़ॉर्म विज़िटर का लिखा बिना एन्क्रिप्शन के भेज देता है, और meta refresh विज़िटर को बिना एन्क्रिप्शन वाले पेज पर ले जाता है, इसलिए इन्हें भी https:// पर ले जाएँ।

मिक्स्ड कंटेंट चेकर कब इस्तेमाल करें

  • साइट को HTTP से HTTPS पर ले जाते समय टेम्पलेट और कंटेंट में लिखे पुराने http:// लिंक खोजना।
  • पता लगाना कि पेज के HTTPS संस्करण पर कोई स्टाइलशीट, फ़ॉन्ट या embed किया मैप क्यों नहीं दिख रहा।
  • CMS कंटेंट जाँचना जो लेखों में absolute http:// इमेज URL चिपका देता है।
  • upgrade-insecure-requests या HSTS चालू करने से पहले पेज जाँचना, ताकि पता रहे कि हर रिसोर्स HTTPS पर चलता है।

समस्या निवारण

  • नतीजा ख़ाली है, पर कंसोल में Mixed Content चेतावनियाँ हैं: वे रिसोर्स लोड के बाद JavaScript जोड़ती है या बाहरी CSS फ़ाइल उनका हवाला देती है। स्क्रिप्ट और स्टाइलशीट में "http://" खोजें।
  • "जवाब HTML पेज नहीं है": URL किसी फ़ाइल, API या ऐसे रीडायरेक्ट-लक्ष्य की ओर है जो HTML नहीं है। पेज का अपना एड्रेस डालें।
  • पेस्ट किए HTML के relative लिंक गलत होस्ट पर resolve हो रहे हैं: पेज का URL भी डालें, या देखें कि HTML में उसका base एलिमेंट है।
  • पेज लॉग-इन माँगता है या ऑटोमेटेड रिक्वेस्ट रोकता है: उसे अपने ब्राउज़र में खोलें, सोर्स देखें और URL की जगह HTML पेस्ट करें।

मिक्स्ड कंटेंट चेकर के बारे में अक्सर पूछे जाने वाले सवाल

active और passive मिक्स्ड कंटेंट में क्या फ़र्क़ है?

active वह है जो पेज को बदल या पढ़ सकता है: स्क्रिप्ट, स्टाइलशीट, फ़्रेम, फ़ॉन्ट और प्लग-इन ऑब्जेक्ट — HTTPS पेज पर http:// से आएँ तो ब्राउज़र इन्हें पूरी तरह ब्लॉक कर देता है। passive में इमेज, ऑडियो और वीडियो आते हैं; आज के ब्राउज़र इन्हें http:// की जगह https:// से माँगते हैं, और फ़ाइल HTTPS पर न हो तो वह दिखती ही नहीं।

साइट HTTPS पर है, फिर भी एड्रेस बार में ताले का निशान क्यों नहीं दिख रहा?

अक्सर इसलिए कि पेज अब भी कोई रिसोर्स http:// से लोड कर रहा है, जैसे किसी लेख की पुरानी इमेज या बाहरी विजेट। यहाँ पेज जाँचकर ज़िम्मेदार लिंक देखें, फिर फ़ाइल HTTPS पर मौजूद होने की पुष्टि करके उसे https:// में बदलें।

क्या जाँच रिसोर्स लोड करती है या पेज की स्क्रिप्ट चलाती है?

नहीं। Mutqan सर्वर सिर्फ़ HTML लाकर आपके ब्राउज़र को लौटाता है, और उसे टेक्स्ट की तरह पढ़ा जाता है। कोई स्क्रिप्ट नहीं चलती और सूचीबद्ध कोई रिसोर्स माँगा नहीं जाता, इसलिए टूल उन बाहरी होस्ट से संपर्क नहीं करता जिनका पेज ज़िक्र करता है।

सूची ख़ाली आई, पर ब्राउज़र कंसोल में Mixed Content चेतावनियाँ हैं — ऐसा क्यों?

क्योंकि वे रिसोर्स पेज लोड होने के बाद JavaScript जोड़ती है, या बाहरी CSS फ़ाइलें उनका हवाला देती हैं, और टूल सिर्फ़ पेज का HTML पढ़ता है। स्क्रिप्ट और स्टाइलशीट में "http://" खोजें, या डेवलपर टूल का Console टैब देखें।

क्या upgrade-insecure-requests जोड़ देना काफ़ी है?

इससे ब्राउज़र हर http:// सब-रिसोर्स अपने-आप https:// से माँगता है और हर फ़ॉर्म https:// पर भेजता है, पर फ़ाइल का सुरक्षित संस्करण यह नहीं बनाता; रिसोर्स HTTPS पर न हो तो लोड फ़ेल होगा। माइग्रेशन के दौरान यह सुरक्षा-जाल है; स्थायी हल यह है कि लिंक https:// या relative रूप में लिखे जाएँ।

तकनीकी नोट्स

वर्गीकरण W3C की Mixed Content स्पेसिफ़िकेशन के अनुसार है: स्क्रिप्ट, स्टाइलशीट, फ़्रेम, फ़ॉन्ट, प्लग-इन ऑब्जेक्ट और fetch जैसे preload "blockable" (active) कंटेंट हैं जिन्हें ब्राउज़र https:// पेज पर http:// से लोड करने से मना करते हैं; इमेज, ऑडियो और वीडियो "upgradeable" (passive) कंटेंट हैं जिन्हें Mixed Content Level 2 के मुताबिक़ ब्राउज़र https:// से माँगते हैं। फ़ॉर्म action और meta refresh लक्ष्य नेविगेशन हैं, जिन्हें स्पेसिफ़िकेशन मिक्स्ड-कंटेंट ब्लॉकिंग से बाहर रखती है; http:// पर जाने वाले फ़ॉर्म के लिए वह ब्राउज़र को चेतावनी देने या रोकने की छूट देती है, और आज के ब्राउज़र चेतावनी देते हैं।

URL वैसे ही resolve होते हैं जैसे WHATWG URL Standard और HTML Standard कहते हैं: पेज के URL के सामने, या अगर पेज में base एलिमेंट है तो पहले base के सामने; protocol-relative URL पेज का https स्कीम लेता है; data:, blob:, about: और javascript: URL अनदेखे किए जाते हैं।

upgrade-insecure-requests (W3C Upgrade Insecure Requests) फ़ेच किए पेज के Content-Security-Policy रिस्पॉन्स हेडर से और HTML के meta http-equiv="Content-Security-Policy" टैग से पढ़ा जाता है; पेस्ट किए HTML के साथ कोई रिस्पॉन्स हेडर नहीं होता, इसलिए वहाँ meta टैग न हो तो जवाब "अज्ञात" होता है। निर्देश होने पर ब्राउज़र हर सब-रिसोर्स URL और हर फ़ॉर्म सबमिशन को रिक्वेस्ट से पहले https:// में बदल देता है, और किसी नेविगेशन को तब जब वह पेज के अपने होस्ट पर ही रहे, इसलिए सूची बताती है कि क्या HTTPS पर मौजूद होना ज़रूरी है, न कि क्या ब्लॉक होगा।

HTML को ब्राउज़र से नहीं, एक सहनशील टैग स्कैनर से पढ़ा जाता है: वह attributes, srcset विकल्प, इनलाइन style attribute और style ब्लॉक पढ़ता है, और 5,000 टैग या 2 MB टेक्स्ट पर रुक जाता है। फ़ेच किया पेज उतना ही पढ़ा जाता है जितना Mutqan सर्वर लौटाता है — 512 KiB तक।

सीमाएँ और कार्यप्रणाली

सिर्फ़ पढ़ा गया HTML जाँचा जाता है। JavaScript से जोड़े गए, बाहरी स्टाइलशीट में लिखे या fetch/XHR से लोड होने वाले रिसोर्स, और फ़्रेम के अंदर का कंटेंट, इस जाँच से बाहर हैं।

पेज Cloudflare नेटवर्क पर चल रहा Mutqan सर्वर एक बार, बिना कुकी और लॉग-इन के, लाता है; यूज़र, डिवाइस या इलाक़े के हिसाब से बदलने वाला पेज असली विज़िटर को दूसरे रिसोर्स दे सकता है। HTML के सिर्फ़ पहले 512 KiB पढ़े जाते हैं।

passive कंटेंट के साथ ब्राउज़र क्या करता है, यह उसके वर्ज़न पर निर्भर है: टेबल उन मौजूदा ब्राउज़रों का बर्ताव बताती है जो Mixed Content Level 2 अपग्रेड लागू करते हैं; पुराने ब्राउज़र passive कंटेंट चेतावनी के साथ http:// से ही लोड करते हैं।

सुरक्षा और गोपनीयता

URL मोड में URL Mutqan सर्वर को जाता है, जो पेज एक बार लाकर उसका HTML जाँच के लिए आपके ब्राउज़र को लौटाता है; कुछ भी सेव नहीं होता। पेस्ट मोड में HTML आपके ब्राउज़र से बाहर नहीं जाता।

HTML को टेक्स्ट माना जाता है: उसकी स्क्रिप्ट कभी नहीं चलतीं और उसमें लिखा कोई रिसोर्स माँगा नहीं जाता, इसलिए पेज जाँचने से उसके बताए बाहरी होस्ट से कोई संपर्क नहीं होता।

संदर्भ

  • Mixed ContentW3Cमिक्स्ड कंटेंट की परिभाषा, और कौन-सी रिक्वेस्ट ब्राउज़र ब्लॉक करते हैं (blockable) और किन्हें https:// पर अपग्रेड करते हैं (upgradeable)।
  • Mixed content — MDNMDN Web Docs (Mozilla)आज ब्राउज़र हर तरह के मिक्स्ड कंटेंट के साथ क्या करते हैं, कंसोल में कौन-से संदेश आते हैं और इसे कैसे ठीक करें।
  • Upgrade Insecure RequestsW3CCSP का upgrade-insecure-requests निर्देश, जिससे ब्राउज़र पेज की http:// रिक्वेस्ट को भेजने से पहले https:// में बदल देता है।