7

का उपयोग कर स्क्रीन स्क्रैपिंग हमारे पास एक उपकरण है जो जांचता है कि कोई दिया गया URL एक लाइव यूआरएल है या नहीं। यदि कोई दिया गया यूआरएल लाइव है तो हमारे सॉफ़्टवेयर का एक और हिस्सा स्क्रीन से सामग्री को स्क्रैप कर सकता है।त्रुटि प्राप्त करना "रिमोट सर्वर ने एक त्रुटि लौटा दी: (403) निषिद्ध" जब HttpWebRequest.GetResponse()

इस जाँच के लिए मेरी कोड अगर एक यूआरएल

public static bool IsLiveUrl(string url) 
    { 
     HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest; 
     webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5"; 
     webRequest.CookieContainer = new CookieContainer(); 
     WebResponse webResponse; 
     try 
     { 
      webResponse = webRequest.GetResponse(); 
     } 
     catch (WebException e) 
     { 
      return false; 
     } 
     catch (Exception ex) 
     { 

      return false; 
     } 
     return true; 
    } 

इस कोड को पूरी तरह से काम करता है लेकिन अपाचे पर होस्ट किसी विशेष साइट के लिए मैं संदेश निम्न के साथ एक वेब अपवाद हो रही लाइव है। "दूरस्थ सर्वर ने एक त्रुटि दिखाई: (403) निषिद्ध" आगे निरीक्षण पर मैं WebException वस्तु में निम्न विवरण पाया

स्थिति = "ProtocolError" StatusDescription = "बुरा व्यवहार"

यह अनुरोध है हेडर "उपयोगकर्ता-एजेंट: मोज़िला/5.0 (विंडोज़; यू; विंडोज एनटी 5.1; एन-यूएस; आरवी: 1.8.0.6) गीको/20060728 फ़ायरफ़ॉक्स/1.5 होस्ट: scenicspares.co.uk कनेक्शन: रखें-जीवित"

यह प्रतिक्रिया हैडर "Keep-Alive: timeout = 4, max = 512 कनेक्शन: रखें-जीवित स्थानांतरण-एन्कोडिंग: chunked सामग्री प्रकार: पाठ/html दिनांक: गुरु, 13 जनवरी 2011 10:29:36 GMT सर्वर: अपाचे "

मैं इन VS2008 में एक घड़ी का उपयोग हेडर निकाले। उपयोग में फ्रेम काम 3.5 है।

उत्तर

13

यह पता चला कि सब मुझे क्या करने की जरूरत निम्नलिखित

  webRequest.Accept = "*/*"; 
      webResponse = webRequest.GetResponse(); 

था और यह तय किया गया था।

+0

हैलो @ साइड, मुझे एक ही समस्या का सामना करना पड़ता है, और पहले से ही जोड़ता है। कोड स्वीकार करें, लेकिन मुझे अभी भी यह त्रुटि मिली है। कोई विचार? धन्यवाद – swdev

+5

समझ गया, मुझे इन तीन पंक्तियों को जोड़ना होगा, 'webRequest.Method = "GET"; webRequest.UserAgent = "Foo"; webRequest.Accept = "text/html"; 'अलग-अलग सर्वर को विभिन्न सेटअप – swdev

+1

धन्यवाद swdev की आवश्यकता हो सकती है। आपकी नोक कुछ विकिपीडिया पृष्ठों के साथ समस्या का समाधान करने लगती है। – newman

0

मेरा मानना ​​है कि ऐसी कई समस्याएं हैं जो सर्वर एप्लिकेशन पर निर्भर करती हैं। मेरे विशेष मामले में देखें: The remote server returned an error: (403) Forbidden

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