如果您只是在浏览器中输入网址,您可以看到两者都有效,即使没有javascript也可以使用cdon,他们是否以某种方式阻止了cURL?
我正在尝试建立一个刮刀来帮助合法的电影合法电影,这将使他们受益匪浅,似乎愚蠢的阻止刮刀一般imho。虽然我很不确定这里发生了什么!某处可能只是一个错误..
// Works
get_file1('http://sfanytime.com/sv-SE/Sokresultat/?field=all&q=The+Matrix', '/', 'sfanytime.html');
// Saves a blank 0 KB file
get_file1('http://downloads.cdon.com/index.phtml?action=search&search_terms=The+Matrix', '/', 'cdon.html');
function get_file1($file, $local_path, $newfilename) {
$out = fopen($newfilename, 'wb');
if ($out === FALSE) {
return false;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$error = curl_error($ch);
if (strlen($error) > 0) {
echo "<br>Error is : ". $error;
return false;
}
curl_close($ch);
return true;
}
答案 0 :(得分:3)
您应该更改
行curl_setopt($ch, CURLOPT_FAILONERROR, true);
...到...
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
CURLOPT_FAILONERROR
会导致“无声失败” - 从你所说的,不是你想要的。我用CURLOPT_FOLLOWLOCATION
替换了它,因为当我访问第二个URL时,我被重定向到“选择你的国家”类型页面,这将是一个空体的响应 - 这就是为什么你得到一个空文件
您的代码没有问题,只是您处理来自第二个URL的响应的方式存在问题。您没有看到错误,因为从技术上讲,没有错误。