2010-09-14 3 views
0

Это мой код:403 Запретный ошибка при получении страницы с PHP Curl

 
$url = 'http://www.douban.com/'; 

$url = str_replace(" ", "%20", $url); 
$TheURL_header = substr($url, 0, 7); 
if ($TheURL_header == "http://") { 
    $pos = strpos($url, "/", 7); 
    if ($pos) { 
     $host = substr($url, 7, $pos - 7); 
    } else { 
     $host = substr($url, 7); 
    } 
    $referer = "http://" . $host . "/"; 
} else if ($TheURL_header == "https:/") { 
    $pos = strpos($url, "/", 8); 
    if ($pos) { 
     $host = substr($url, 8, $pos - 8); 
    } else { 
     $host = substr($url, 8); 
    } 
    $referer = "https://" . $host . "/"; 
} else { 
    $pos = strpos($url, "/"); 
    if ($pos) { 
     $host = substr($url, 0, $pos); 
    } else { 
     $host = substr($url, 0); 
    } 
    $url = "http://" . $url; 
    $referer = "http://" . $host . "/"; 
} 

$c = curl_init(); 
$curl_header = array(
    'Accept: */*', 
    'Referer: ' . $referer, 
    'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2', 
    'Host: ' . $host, 
    'Connection: Keep-Alive'); 
curl_setopt($c, CURLOPT_URL, $url); 
curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'GET'); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_HTTPHEADER, $curl_header); 
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($c, CURLOPT_TIMEOUT, 30); 
curl_setopt($c, CURLOPT_HEADER, 0); 

$res = curl_exec($c); 

echo $res; 

Он отлично работает, когда я поставил $ URL = «http://www.google.com», но если я изменю $ URL, например www.example.com. aoguejewellery.com и некоторые другие URL-адреса, я всегда получал ошибку 403.

+2

'403' не является ошибочной ошибкой запроса, но является Запретной ошибкой. Код состояния для Bad Request - «400». – BoltClock

+0

Спасибо, я обновил. – yesmeck

+0

Сайт может использовать файлы cookie для отслеживания сеанса. Я не поставил это в качестве ответа, потому что у меня больше опыта использования java для захвата веб-страниц. Но у меня была аналогичная проблема, и мне пришлось использовать java-библиотеки apache HttpClient для полного эмуляции браузера и управления файлами cookie. Просто что посмотреть. –

ответ

0

Попробуйте удалить curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'GET');, а затем повторите попытку.

Смежные вопросы