1

我正在尝试从以下链接下载文件 Desired File

当我手动下载它时,它会根据需要有一个 close.lis 文件。但是当我使用以下 curl 代码时,它会返回一个 924 字节的文件。如果我尝试在计算机上提取它,它说文件已损坏。但是,如果我在我的 cuteFTP 程序中单击编辑,它会返回以下输出

函数 setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/"; } 函数 getHostUri() { var loc = document.location; 返回 loc.toString(); } setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '69.167.137.119', 10); setCookie('DOAReferrer', document.referrer, 10); location.href = getHostUri();此站点需要启用 JavaScript 和 Cookie。请更改您的浏览器设置或升级您的浏览器。

我的卷曲代码如下

$url = "http://www.kse.com.pk/scripts/communicator.php?f=20130812.lis.Z&l=Hd";
$path = "data1/20130812.lis.Z";
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);

后来我也尝试获取cookie并运行代码但没有成功。保存时的 cookie 文件没有数据。

 $path = "data1/20130812.lis.Z";
$fp = fopen($path, 'w');
$ckfile = tempnam ("./", "CURLCOOKIE");
$ch = curl_init ("http://www.kse.com.pk/scripts/communicator.php?f=20130812.lis.Z&l=Hd");
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
$ch = curl_init("http://www.kse.com.pk/scripts/communicator.php?f=20130812.lis.Z");
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $fp);
$output = curl_exec($ch);
curl_close($ch);

我需要把上面的下载放在 cronjob 上,以便它把文件保存在服务器上,我可以做剩下的处理

4

2 回答 2

3

好的,所以这段代码可以正常工作:

$str = file_get_contents($url);
list($x, $y, $z) = explode("setCookie(", $str);
list($y) = explode(")", $y);
list($z) = explode(")", $z);
list($a[0], $a[1]) = explode(', ', $y);
list($a[2], $a[3]) = explode(', ', $z);
foreach ($a as &$b) {
    $b = trim ($b, "'");
}
$cookie_str = "$a[0]=$a[1]; $a[2]=$a[3]";
$path = "data1/20130812.lis.Z";
$fp = fopen($path, 'w');
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIE, $cookie_str);
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_exec($ch);
curl_close($ch);
fclose($fp);

给我红包!!!:D

于 2013-08-15T10:05:21.353 回答
1

您可以简单地使用file_get_contents('http://www.kse.com.pk/scripts/communicator.php?f=20130812.lis.Z&l=Hd') 来抓取文件,并将其写入磁盘。

但似乎您的文件通过了需要启用 JS 的脚本。

于 2013-08-13T08:57:38.607 回答