2012-05-24 18 views
6

मैं दूरस्थ साइट से डेटा लाने के लिए बहु कर्ल का उपयोग कर रहा हूं। मेरी स्क्रिप्टकर्ल 403 वर्जित त्रुटि से कैसे निपटें? कोई समाधान?

foreach ($urls as $i => $url) { 
      $ch[$i] = curl_init($url['url']); 
      curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0); 
      curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0); 
      curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false); 
      curl_multi_add_handle($multiCurlHandler, $ch[$i]); 
} 

यह मुझे प्रतिक्रिया में 403 प्रतिबंधित है।

सुझावों और टिप्पणियों के लिए अग्रिम धन्यवाद।

+2

'url ['url']' 'क्या है? यह रिमोट सर्वर के बारे में है, यह curl के साथ बहुत कम करने के लिए है। क्या आप वेब सेवा का उपभोग करने, वेब पृष्ठों आदि को देखने की कोशिश कर रहे हैं? – DaveRandom

उत्तर

9

उपयोगकर्ता एजेंटों के लिए दो पंक्तियां जोड़कर प्रयास करें, और देखें कि यह काम करता है या नहीं। कुछ सर्वर स्क्रिप्ट से अनुरोध स्वीकार नहीं करते हैं, यह उपयोगकर्ता एजेंटों पर निर्भर करता है।

// line 1 
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 

foreach ($urls as $i => $url) { 
    $ch[$i] = curl_init($url['url']); 
    curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0); 
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0); 

    // line 2 
    curl_setopt($ch[$i], CURLOPT_USERAGENT, $agent); 

    curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false); 
    curl_multi_add_handle($multiCurlHandler, $ch[$i]); 
} 
1

संपर्क करें जो भी आप कनेक्ट करने का प्रयास कर रहे हैं और उनसे पूछें कि आपका अनुरोध क्यों प्रतिबंधित है।

तब आप या तो रोक सकते हैं (यदि आप जो कर रहे हैं उसे आसानी से अस्वीकार्य समझा जाता है) या अनुरोध को बदल दें ताकि यह उनके नियमों के अनुरूप हो।

0

रेफरर और उपयोगकर्ता-एजेंट शीर्षलेख सेट करने का प्रयास करें, लेकिन!

... गलत करने के लिए CURLOPT_SSL_VERIFYPEER सेटिंग खतरनाक है, और इसे उत्पादन में कभी नहीं किया जाना चाहिए। कम से कम किसी प्रकार की is_dev जांच में उस पंक्ति को लपेटें।

आप ऐसा करके एसएसएल के उद्देश्य को हरा रहे हैं, जिससे हमलावर आपके अनुरोध को रोक सकता है और अपने एसएसएल प्रमाण पत्र को सत्यापित किए बिना उन्हें क्या पसंद है।

0

संजय की answer हमेशा मदद कर सकता है। लेकिन जब ग्राहक आईपी को अलग तरफ अवरुद्ध किया जाता है, तो ग्राहक पक्ष में कर्ल निष्पादित करने से यह त्रुटि भी मिलती है।

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