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错误。
'403'不是一个错误的请求错误,而是一个禁止的错误。错误请求的状态码是'400'。 – BoltClock 2010-09-14 04:02:01
谢谢,我已更新。 – yesmeck 2010-09-14 04:31:49
该网站可能使用cookie来跟踪会话。我没有把它作为答案,因为我有更多使用java抓取网页的经验。但我有类似的问题,我不得不使用Apache HttpClient Java库来完全模拟浏览器并处理cookie管理。只是要看看。 – 2010-09-14 04:37:49