有时,HTTP 404来自响应中的标题 - 可能有响应内容(通常是自定义错误404页面)或Google.com浏览器中的页面503将显示验证码,允许用户写入字母。
Google Error Page http://goohackle.com/imgs/google_error.jpg
如果我在浏览器中访问404页面,则只会加载自定义错误404页面的内容。 但是在PHP中,cURL没有显示与浏览器相同的内容。
当标题返回404或503页面时,我可以使用cURL获取内容吗?
例如代码我在www.example.com/show503.php
中创建了显示503错误的页面header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 7200'); // in seconds
print "This message will show only browser";
当我使用此代码卷曲到www.example.com/show503.php时
$ch = curl_init('www.example.com/show503.php');
$ret = curl_exec($ch);
curl_close($ch);
var_dump($ret);
它获取NULL值无法获取内容“此消息仅显示浏览器”。
答案 0 :(得分:3)
你没有设置CURLOPT_RETURNTRANSFER
,所以无论如何你都不会得到任何东西。
这应该有效:
$ch = curl_init('www.example.com/show503.php');
curl_setopt($ch ,CURLOPT_RETURNTRANSFER,true);
$ret = curl_exec($ch);
curl_close($ch);
var_dump($ret);
答案 1 :(得分:3)
对于简单的文本提取,您可以使用file_get_contents
方法。
答案 2 :(得分:1)
我认为你需要
curl_setopt($ch ,CURLOPT_HTTP200ALIASES,array(404,503));
见