ऑफ़लाइन होने पर ऑनलाइन वेबसाइट पर जाएं


15

मैं एक स्थानीय सर्वर का उपयोग करके एक वेबसाइट विकसित कर रहा हूं, लेकिन मेरे पास दूरस्थ निर्भरताएं हैं। मैं दूरस्थ सर्वर से फ़ाइलों के लिए नकली अनुरोध करना चाहूंगा। उदाहरण के लिए, जब ब्राउज़र अनुरोध करता है fooCDN.com/bloatedLib.jsकि सामग्री /Users/name/Desktop/bloatedLib.jsवापस आ जाएगी।

मैं एक मैक और एक समाधान का उपयोग करता हूं जो सिस्टम या ब्राउज़र स्तर पर काम करता है वह ठीक होगा। यदि यह ब्राउज़र स्तर पर काम करता है, तो केवल एक फ़ायरफ़ॉक्स या क्रोम समाधान ठीक होगा। मैं विंडोज़ कंप्यूटर का उपयोग नहीं कर सकता।


क्या आप विंडोज कंप्यूटर का उपयोग करने में सक्षम हैं?
geek1011

@ geek1011 नहीं, यह संभव नहीं होगा
डैनियल एफ

5
सुनिश्चित नहीं है कि मैं आपको सही ढंग से समझ पाऊं, लेकिन क्या आप इंटरनेट से कोई संबंध नहीं होने पर भी वेबसाइट का उपयोग करने में सक्षम हैं? और यदि ऐसा है, तो एक स्थानीय प्रतिलिपि का उपयोग करें? एक प्रॉक्सी सर्वर की तरह?
LPChip

@LPChip मुझे ऑफ़लाइन होने पर भी लोड होने के लिए jQuery जैसी बाहरी निर्भरता की आवश्यकता है। यह किसी और का भंडार है, इसलिए मैं सिर्फ बाहरी निर्भरता को स्थानीय नहीं बना सकता। अगर यह ब्राउज़र कैश में संस्करण को लोड कर सकता है जब यह ऑफ़लाइन है तो यह एकदम सही होगा। अधिकांश वेबसाइट एक स्थानीय सर्वर में है।
डैनियल एफ

आप HTML5 "ऑफ़लाइन वेब एप्लिकेशन" का उपयोग कर सकते हैं
माइकल

जवाबों:


11

मैंने केवल गुम फाइलों को डाउनलोड करने के लिए इस छोटे प्रॉक्सी सर्वर को एक साथ हैक किया। जिन साइटों को आप 127.0.0.1 पर कैश करना चाहते हैं उन्हें पॉइंट करने के लिए बस अपनी / etc / मेजबान फाइल सेट करें और जिन्हें आप 0.0.0.0 पर ब्लॉक करना चाहते हैं

#!/bin/sh 
nc -ll -p 80 -e sh -c ' 
while read A B DUMMY 
do 
   case "$A" in 
      [Gg][Ee][Tt]) 
         FULL=$B #full path of the file
         F=${FULL##*/}
         F=${F%%\?*} #file name only
         #if we have it cat it back to browser
         [ -f "$F" ] && cat "$F" && break 
      ;; 
      [Hh][Oo][Ss][Tt]*) 
         [ -f "$F" ] && break #file already exists
         HOST=${B:0:$((${#B}-1))} #the host name
         #resolve by DNS first so we can cache it
         sed -i "s/hosts:\t\tfiles /hosts:\t\t/g" /etc/nsswitch.conf 
         wget -t 0 -q --no-dns-cache $HOST$FULL
         #got it now revert to checking host file 1st
         sed -i "s/hosts:\t\t/hosts:\t\tfiles /g" /etc/nsswitch.conf
         #cat the file because I didn't think to wget through tee
         cat "$F" 
         break 
      ;; 
   esac 
done 
'

ध्यान दें कि यह सभी फ़ाइलों को एक निर्देशिका में रखता है, इसलिए यह संस्करण संघर्ष का कारण बन सकता है। (मैंने जानबूझकर ऐसा किया था इसलिए मेरे पास 500 प्रतियां नहीं होंगी)


क्या आप अपना कोड कमेंट कर सकते हैं ताकि मैं इसे बेहतर तरीके से समझ सकूँ। मुझे यह उत्तर बहुत पसंद है क्योंकि मुझे बहुत सारे सॉफ़्टवेयर स्थापित करने की आवश्यकता नहीं है
डैनियल एफ

1
@DanielF मैंने कुछ इनलाइन टिप्पणियाँ जोड़ीं। मुझे पता है कि अगर यह समझ में आता है, तो यह संभवतः मेरे द्वारा लिखे गए हैकस हैक में से एक है। मैंने इसे केवल आवश्यकता से बाहर लिखा है क्योंकि मैं एक व्यस्त संसाधन की प्रतीक्षा में ब्राउज़र स्टॉल प्राप्त करता रहा। मुझे यह उल्लेख करना चाहिए कि जब मैंने इसे लिखा था तो मैं पिल्ला लिनक्स का उपयोग कर रहा था, इसलिए कुछ पंक्तियों को सूडो चलाने की आवश्यकता हो सकती है।
टेक्नोसॉरस

नोट: कुछ ब्राउज़रों को फ़ाइल को "कैटिंग" करने के बजाय एक वास्तविक http हेडर की आवश्यकता हो सकती है (हालाँकि मेरा कोई भी नहीं किया था)। यदि आपके पास एक ब्राउज़र है जो इस बुरे व्यवहार को स्वीकार / ठीक नहीं करता है, तो आप फ़ाइल का आकार प्राप्त करने के लिए स्टेट का उपयोग कर सकते हैं और इसका उपयोग उचित हेडर प्रिंट करने के लिए कर सकते हैं।
टेक्नोसॉरस

@technosaurus: मैं कुछ समान लागू करने की कोशिश कर रहा हूं, हालांकि मुझे एक त्रुटि मिल रही है: illegal option -- eक्या आप इसके साथ मदद कर सकते हैं?
अनुराग पेशेने

@AnuragPeshne नेटकैट के कई विविध कार्यान्वयन हैं; इस पर निर्भर करता है कि आप किस कार्यान्वयन का उपयोग कर रहे हैं, आप -cस्क्रिप्ट चलाने के लिए पैरामीटर का उपयोग करने में सक्षम हो सकते हैं (समान भाग के -eबिना sh -c)
Technosaurus

24

ऐसा लगता है कि आप एक स्थानीय वेब सर्वर चला रहे हैं। अति उत्कृष्ट।

आपके मैक के फाइल सिस्टम में, एक फाइल होती है जिसे कहा जाता है /etc/hosts। आप fooCDN.comइस पंक्ति को जोड़कर अपने स्थानीय मशीन के लिए सभी अनुरोधों को पुनर्निर्देशित कर सकते हैं /etc/hosts:

127.0.0.1   foocdn.com www.foocdn.com

आपको संपादित करने के लिए रूट (सुपर उपयोगकर्ता) की अनुमति की आवश्यकता होगी /etc/hosts

उपरोक्त पंक्ति का मतलब है कि fooCDN.comआपके स्वयं के कंप्यूटर से लोड होगा, जहां एक वेब सर्वर सुन रहा है।

आपने यह निर्दिष्ट नहीं किया कि आप स्थानीय स्तर पर कौन सा वेब सर्वर चला रहे हैं। वेब सर्वर के दस्तावेज़ीकरण के बाद, आपको एक वर्चुअल होस्ट बनाना चाहिए जो दस्तावेज़ रूट को इंगित करता fooCDN.comहै /Users/name/Desktop/

यह एक नमूना कॉन्फ़िगरेशन है (मैंने इसे स्वयं परीक्षण नहीं किया है) आप अपाचे के साथ उपयोग करने का प्रयास कर सकते हैं :

<VirtualHost 127.0.0.1:80>
    ServerName foocdn.com
    ServerAlias www.foocdn.com
    DocumentRoot /Users/name/Desktop
</VirtualHost>

यहाँ Nginx के लिए एक नमूना विन्यास (भी अनुपलब्ध):

server {
    listen 80;
    root /Users/name/Desktop;
    server_name foocdn.com;
}

आप वेब सर्वर सेवा को पुनरारंभ करना या नई कॉन्फ़िगरेशन फ़ाइल को पुनः लोड करना न भूलें।


आपका उत्तर अच्छा था, लेकिन मैंने उस उत्तर को स्वीकार कर लिया है जिसके लिए मुझे कुछ भी स्थापित करने की आवश्यकता नहीं थी
डैनियल एफ

@DanielF: ओह, तो आप एक स्थानीय वेब सर्वर नहीं चला रहे हैं?
Deltik

1
@ डैलिक सही। वह चाहता है पूछने के लिए सक्षम होने के लिए fooCDN.comजब वह कोई इंटरनेट कनेक्शन है किसी फ़ाइल के लिए।
बेनजीवेबे

2

आप प्रॉक्सी सर्वर सॉफ़्टवेयर का उपयोग कर सकते हैं जो कार्य को पूरा करने के लिए URL पुनर्लेखन का समर्थन करता है । कई प्रॉक्सी सर्वर एप्लिकेशन URL पुनर्लेखन का समर्थन करते हैं। जैसे, Windows, Mac OS और Linux के लिए चार्ल्स वेब डिबगिंग प्रॉक्सी एप्लिकेशन URL पुनर्लेखन का समर्थन करता है । आप इसे अपने मैक सिस्टम पर स्थापित कर सकते हैं और फिर प्रॉक्सी सर्वर का उपयोग करने के लिए सिस्टम पर ब्राउज़रों को कॉन्फ़िगर कर सकते हैं।

वैकल्पिक रूप से, अपाचे , जो स्वतंत्र और खुला स्रोत है, में mod_proxy और mod_rewrite मॉड्यूल हैं।

मित्प्रॉक्सी मुफ्त है और मैक ओएस एक्स सिस्टम पर भी चलेगा।

यदि आपको प्रॉक्सी सर्वर के माध्यम से उपलब्ध कराने के लिए अपने ब्राउज़र के कैश से आइटम खींचने की आवश्यकता है, तो आप क्रोम कैश (आसान तरीका) देखने में प्रदान की गई तकनीकों का उपयोग कर सकते हैं । उदाहरण के लिए, Google Chrome में आप chrome:\\cacheब्राउज़र के एड्रेस बार में डाल सकते हैं और फिर क्रोम कैश में संबंधित वस्तुओं का पता लगा सकते हैं और उन्हें कहीं और कॉपी कर सकते हैं।


क्या आप चार्ल्स के अलावा किसी भी सॉफ्टवेयर के बारे में जानते हैं, खासकर मुफ्त सॉफ्टवेयर?
डैनियल एफ

आपका उत्तर अच्छा है, लेकिन मैंने दूसरे उत्तर को स्वीकार कर लिया है जिसके लिए नॉन फ्री सॉफ्टवेयर की आवश्यकता नहीं है।
डैनियल एफ

कोई बात नहीं; Deltik का समाधान आपकी स्थिति के लिए एक अच्छा है। मैंने चार्ल्स के लिए कुछ मुफ्त विकल्प जोड़े।
चांदनी

1
@DanielF एक अन्य डीबगिंग प्रॉक्सी फ़िडलर है, जिसमें एक अल्फा ओएस एक्स बिल्ड है और फ़ाइल प्रतिक्रियाओं का समर्थन करता है और विशिष्ट प्रतिक्रियाओं को दोहराता है । यह संपूर्ण डोमेन को भी पुनर्निर्देशित करने की तुलना में अधिक बारीक है।
बॉब

2

अच्छा पुराने wwwoffle की तरह लगता है अपनी आवश्यकताओं के अनुरूप होना चाहिए। यह एक प्रॉक्सी सर्वर है जहाँ आप ऑफ़लाइन उपयोग के लिए संसाधनों का चयन कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.