有一个浏览器可以访问的网站,但无法通过PHP CURL / file_get_contents()访问
在阅读了类似的主题和答案之后,我想出了这段仍然不起作用的代码:
$opts = array('http' =>
array(
'method' => 'GET',
'follow_location' => 1,
'user_agent ' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0",
'header' =>
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n".
"Cache-Control: max-age=0\r\n".
"Connection: keep-alive\r\n".
"Keep-Alive: 300\r\n".
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n".
"Accept-Language: en-US,en;q=0.5\r\n".
"Accept-Encoding: gzip, deflate\r\n".
"Host: www.netcarshow.com"
)
);
$context = stream_context_create($opts);
$html = file_get_contents("http://www.netcarshow.com", false, $context);
此脚本执行的结果是ERROR 403:Forbidden。我真的被卡住了。
非常感谢任何意见或建议。
答案 0 :(得分:0)
假设网址受HTTP基本身份验证用户名/密码保护,则您错过了相应的标头:
Authorization: Basic [base64-encoded username:password here]
e.g。
"Authorization" => "Basic " . base64_encode('username:password')
答案 1 :(得分:0)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.netcarshow.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
curl_close($ch);
?>
返回您提到的403错误。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.netcarshow.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36");
echo curl_exec($ch);
curl_close($ch);
?>
返回页面。
唯一的区别是用户代理设置。
服务器似乎与用户代理有关。
我还尝试使用“我的网络浏览器”作为用户代理并返回页面。