带有cURL,file_get_contents()和fopen()的标题响应“403 Forbidden”

时间:2012-07-03 20:12:33

标签: php

我希望你能帮助我。 该网站目前在线,我可以访问它,我似乎无法理解为什么这不起作用。

file_get_contents()fopen()返回错误说明以下内容:

PHP Warning:  file_get_contents(http://www.hackforums.net): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /host/Users/Phizo/Desktop/stalker.php on line 29

现在我刚刚开始接受cURL,因为我想试试这个403,也没有运气。

$handle = curl_init();
$file = fopen('source.txt', 'w');

curl_setopt($handle, CURLOPT_URL, 'http://www.hackforums.net/');
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_AUTOREFERER, true);
curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1');
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_FILE, $file);

curl_exec($handle);

print_r(curl_getinfo($handle));

curl_close($handle);
fclose($file);

输出以下错误:

Fatal error: Maximum execution time of 30 seconds exceeded in D:\Hosting\6514439\html\zeonsglobal\admin\press_uploads\stalker.php on line 29

1 个答案:

答案 0 :(得分:3)

此代码适用于我,您无需执行自定义请求即可实现所需。

$handle = curl_init();

curl_setopt($handle, CURLOPT_URL, 'http://www.hackforums.net/');
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1');
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($handle);

var_dump($result);

curl_close($handle);

你获得403的可能原因是因为fopen正在传递的用户代理。如果从curl请求中删除用户代理,则还会收到403错误。

我添加了curl选项CURLOPT_RETURNTRANSFER,因此当您调用curl_exec()时,它会以字符串形式返回响应。

希望有所帮助。