2010-09-14 88 views
0

一个页面时,这是我的代码:403 Forbidden错误掌握PHP卷曲

 
$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”,但如果我改变$网址,如www。 aoguejewellery.com和其他一些网址,我总是得到一个403错误。

+2

'403'不是一个错误的请求错误,而是一个禁止的错误。错误请求的状态码是'400'。 – BoltClock 2010-09-14 04:02:01

+0

谢谢,我已更新。 – yesmeck 2010-09-14 04:31:49

+0

该网站可能使用cookie来跟踪会话。我没有把它作为答案,因为我有更多使用java抓取网页的经验。但我有类似的问题,我不得不使用Apache HttpClient Java库来完全模拟浏览器并处理cookie管理。只是要看看。 – 2010-09-14 04:37:49

回答

0

尝试删除curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'GET');,然后重试。