使用CURL下载没有直接路径| www.url.com/things?download=file

时间:2015-12-23 01:55:37

标签: php curl download get

如何在没有文件直接路径的情况下从网页下载文件。例如,带有GET信息的URL而不是路径。下面的代码似乎是下载实际的页面html而不是文件...

不确定我做错了什么。我还想增加这个以便在需要登录的网站上执行,但我想我只需要添加

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password")

代码?

$output_filename = "advanced.exe";

$host = "http://download.cnet.com/Advanced-SystemCare-Free/3001-2086_4-10407614.html?hlndr=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_REFERER, "http://download.cnet.com");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);

$fp = fopen($output_filename, 'w');
fwrite($fp, $result);
fclose($fp);

1 个答案:

答案 0 :(得分:0)

您所拥有的链接不是文件的实际链接,只是启动下载的页面。从它的外观来看,该页面使用JavaScript来触发下载,因此您需要深入了解他们的代码以确切了解他们是如何做到的。然后,您可以找到该文件的真实URL。

一种简单的方法,如果您只为一个文件执行此操作,则可以在浏览器中下载该文件,然后从浏览器的下载管理器访问其使用的URL。 (例如,在Firefox中,右键单击该文件并选择"复制下载链接")

  

我还想扩充这个以便在需要登录的网站上执行,但我想我只需添加...

这仅适用于基于HTTP的身份验证。如果该网站使用传统的登录表单,则无效。您必须通过CURL提交多个连续的HTTP请求,使用cookie来存储会话状态。