2011-06-07 6 views
12

मुझे आश्चर्य है कि ऐसा कुछ करने का कोई तरीका है: यदि किसी विशिष्ट साइट पर मैं चाहता हूं कि कुछ जावास्क्रिप्ट फ़ाइलों को सीधे मेरे कंप्यूटर से लोड किया जाए (fe फ़ाइल: /// c: /test.js), सर्वर से नहीं।क्रोम एक्सटेंशन, ब्राउजर को प्रदर्शित करने से पहले प्रतिक्रिया कोड में एचटीएमएल को प्रतिस्थापित करें

इसके लिए मैं सोच रहा था कि कोई एक्सटेंशन बनाने की संभावना है जो HTML कोड को उस प्रतिक्रिया में बदल सकता है जो ब्राउज़र को प्रदर्शित करने से पहले सही हो जाता है। तो पूरी प्रक्रिया है कि तरह दिखना चाहिए:

  1. अनुरोध किया जाता है
  2. ब्राउज़र हो जाता है सर्वर से प्रतिक्रिया
  3. #response # बदल गया है - इस भाग जब एक्सटेंशन में
  4. ब्राउज़र पार्स प्रतिक्रिया बदल आता है और उस नई प्रतिक्रिया के साथ पेज प्रदर्शित करें।

इसे किसी भी तरह क्रोम एक्सटेंशन भी नहीं होना चाहिए। इसे ऊपर वर्णित नौकरी करना चाहिए। यह मूल फ़ाइल को अवरुद्ध कर सकता है और किसी अन्य (DNS/प्रॉक्सी?) की सेवा कर सकता है या मेरे कंप्यूटर में संपूर्ण HTTP ट्रैफ़िक फ़िल्टर कर सकता है और विशिष्ट कोड को मिलान की गई प्रतिक्रिया में से किसी एक को प्रतिस्थापित कर सकता है।

उत्तर

4

आप इसे प्राप्त करने के लिए WebRequest API का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप एक onBeforeRequest श्रोता जोड़ सकते हैं और कुछ अनुरोध अनुप्रेषित कर सकते हैं:

chrome.webRequest.onBeforeRequest.addListener(function(details) 
{ 
    var responseData = "<div>Some text</div>" 
    return {redirectUrl: "data:text/html," + encodeURIComponent(responseData)}; 
}, {urls: ["https://www.google.com/"]}, ["blocking"]); 

यह पाठ "कुछ पाठ" के बजाय Google मुखपृष्ठ के साथ एक <div> तत्व को प्रदर्शित करेगा। ध्यान दें कि आप केवल उन यूआरएल पर रीडायरेक्ट कर सकते हैं जिन्हें वेब सर्वर को रीडायरेक्ट करने की अनुमति है। इसका अर्थ है कि file:/// URL पर रीडायरेक्ट करना संभव नहीं है, और यदि आप web accessible हैं तो आप केवल अपने एक्सटेंशन के अंदर फ़ाइलों को रीडायरेक्ट कर सकते हैं। data: और http: यूआरएल ठीक काम करते हैं।

1

विंडोज़ में आप प्रॉक्सीमिट्रॉन (proxomitron.info) का उपयोग कर सकते हैं जो एक स्थानीय प्रॉक्सी है जो आपके ब्राउज़र में लोड होने वाले किसी भी पेज या फ़ाइल को रोक सकता है और नियमित अभिव्यक्तियों (कोई डोम पार्सिंग) का उपयोग करके इसे बदल सकता है, हालांकि इससे पहले कि आप चाहते हैं ब्राउज़र द्वारा प्रस्तुत किया जाता है।

संबंधित मुद्दे