如何在没有文件直接路径的情况下从网页下载文件。例如,带有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);
答案 0 :(得分:0)
您所拥有的链接不是文件的实际链接,只是启动下载的页面。从它的外观来看,该页面使用JavaScript来触发下载,因此您需要深入了解他们的代码以确切了解他们是如何做到的。然后,您可以找到该文件的真实URL。
一种简单的方法,如果您只为一个文件执行此操作,则可以在浏览器中下载该文件,然后从浏览器的下载管理器访问其使用的URL。 (例如,在Firefox中,右键单击该文件并选择"复制下载链接")
我还想扩充这个以便在需要登录的网站上执行,但我想我只需添加...
这仅适用于基于HTTP的身份验证。如果该网站使用传统的登录表单,则无效。您必须通过CURL提交多个连续的HTTP请求,使用cookie来存储会话状态。