URL के साथ भूल जाओ जिसमें # शामिल है


11

मैं एक ऐसा URL डाउनलोड करने की कोशिश कर रहा हूं जो पसंद है http://www.somesite.com/restaurants.html#photo=22x00085

मैंने इसे एकल उद्धरणों के बीच में रखा है, लेकिन यह केवल http://www.somesite.com/restword.html डाउनलोड करता है जो कि सही पृष्ठ नहीं है।

क्या कोई हल है?


अब इसका परीक्षण नहीं कर सकता, लेकिन जो मुझे अंतरिक्ष के लिए% 20 काम याद है, इसलिए% 23 शायद # के लिए काम करेगा (% 23 # के लिए प्रतिशत-एन्कोडिंग है)
लूपिनचो

3
यह एक ही HTML फ़ाइल नहीं है? # वेब ब्राउज़र को पृष्ठ के किसी विशेष भाग में जाने के लिए कह सकता है।
बार्लोप

जवाबों:


20

wgetठीक काम कर रहा है। Url सिंटैक्स निर्दिष्ट करता है कि टुकड़ा - #fooभाग - है पूरी तरह से क्लाइंट-साइड में व्याख्या की जा करने के लिए, और जब स्वयं दस्तावेज़ पुन: प्राप्त करने के लिए इस्तेमाल नहीं।

उदाहरण के लिए, यदि यह एक HTML पृष्ठ है, तो ब्राउज़र एक नामित अनुभाग तक नीचे जा सकता है, या - आपके मामले में - कुछ जावास्क्रिप्ट कोड को ट्रिगर करता है जो एक विशेष तस्वीर दिखाता है।

दूसरे शब्दों में, जहाँ तक wgetबात है, यू.आर.आई.

  • http://www.somesite.com/restaurants.html#photo=22x00085 तथा
  • http://www.somesite.com/restaurants.html

... उसी पृष्ठ पर इंगित करें /restaurants.html । बाकी काम करना आपके ब्राउज़र पर निर्भर है। restaurants.html#photo=22x00085ब्राउज़र में खुलकर काम करना चाहिए।


8

उचित लिंक पर आए बिना, मैं नहीं बता सकता कि यह कौन सा है, लेकिन केवल दो विकल्प हैं:

  • हैश वास्तव में अनुरोधित दस्तावेज़ के नाम का हिस्सा है। इस स्थिति में, आप इसे एन्कोड कर सकते हैं:

    http://www.somesite.com/restaurants.html%23photo=22x00085

  • अन्य परिस्थितियों में, सामान्य परिस्थितियों में, http://www.somesite.com/restours.html और http://www.somesite.com/restports.html#photo=22x00085 एक ही पृष्ठ पर इंगित होना चाहिए। हैश के बाद का हिस्सा केवल उस एंकर को इंगित करता है जिसे ब्राउज़र को पेज लोड करने के बाद स्क्रॉल करना चाहिए; यह सर्वर पर भेजा भी नहीं जाता है।

    हालांकि, यह है संभव है कि हैश (ab) जावास्क्रिप्ट के साथ एक विशेष फोटो लोड करने के लिए प्रयोग किया जाता है। Wget जावास्क्रिप्ट की व्याख्या नहीं कर सकता है, इसलिए इसके बारे में आप कुछ नहीं कर सकते।


मैंने कई साइटें देखी हैं जो इस तरह से URL के टुकड़े का दुरुपयोग करती हैं; सूची में सबसे ऊपर स्वयं Google है। यह RFC के पूरे समूह का उल्लंघन करता है, लेकिन ऐसा नहीं है कि बहुत से लोग देखभाल करने लगते हैं, क्योंकि "यह काम करता है" ...
माइकल हैम्पटन

1
@ मिचेल हैम्पटन: क्या आप ठीक से इंगित कर सकते हैं कि यह किस RFC का उल्लंघन करता है?
user1686

@ ग्रेविटी RFC 2396, भाग 2.4.3 को यह कहने के लिए पढ़ा जा सकता है कि # किसी भी URI का हिस्सा नहीं है। ऐसा लगता है कि RFC 3986 में आराम है, कुछ भी परिभाषित नहीं करने के लिए पर्याप्त अस्पष्ट है।
अमीर होमोलका

1
@ रीचोमोल्का: यह केवल यह कहता है कि "फू # बार" को वास्तव में "यूआरआई-संदर्भ" कहा जाता है, जिसमें यूआरआई (डेटा पुनर्प्राप्ति के लिए उपयोग किया जाता है) और टुकड़ा (उपयोगकर्ता-एजेंट के लिए छोड़ दिया गया व्याख्या) शामिल है। इसका उल्लंघन केवल तभी किया जाएगा जब वास्तव में एक HTTP अनुरोध में टुकड़ा भेजा गया था।
15:16 पर user1686

0

वह छवि के लिए URL नहीं है। यह एक ऐसे पृष्ठ का URL है जो चित्र लाने के लिए स्क्रिप्ट या अन्य कोड का उपयोग करता है। जावास्क्रिप्ट बंद कर पृष्ठ को लोड करने का प्रयास करें। यही आप के लिए गर्भ धारण कर रहा है।

छवि के लिए URL खोजने के लिए, अपने ब्राउज़र के माध्यम से पृष्ठ पर जाने और फिर फ़ोटो पर राइट-क्लिक करने का प्रयास करें। इसके URL सहित छवि के बारे में जानकारी देखने का विकल्प होना चाहिए।

यदि वह काम नहीं करता है, तो यह हो सकता है क्योंकि छवि को फ्लैश या किसी अन्य क्लाइंट-साइड प्रोग्राम के माध्यम से लोड किया जा रहा है। आप URL को लोड करने के लिए देखने के लिए Fiddler या Wireshark का उपयोग कर सकते हैं।

यदि आप हमें छवि के साथ साइट का वास्तविक URL देते हैं, तो हम आपको यह निर्धारित करने में मदद कर सकते हैं कि चित्र कैसे लोड किया जा रहा है।

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