java - PHP curl 下载 cookie 和 javascript 保护的文件

标签 java php curl

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

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

function 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=/"; } function getHostUri() { var loc = document.location; return loc.toString(); } setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '69.167.137.119', 10); setCookie('DOAReferrer', document.referrer, 10); location.href = getHostUri();This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.

我的curl代码如下

$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 上,这样它就可以将文件保存在服务器上,我可以进行其余的处理

最佳答案

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

$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

关于java - PHP curl 下载 cookie 和 javascript 保护的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18204640/

相关文章:

java - Java 字节码中的字段引用

java - 方法在调用时似乎没有运行

java - 关闭android程序立即运行json中的应用程序

java - 使用 curl 和 java okhttp 调用简单的 GET 请求时,我得到了不同的结果

ruby-on-rails - 在 windows xp(32 位)上的 Ruby on Rails 上安装 Typhoeus

java - 为什么 grouplayout 会调整父 gridbaglayout 的大小?

java - Java中如何对两个字段进行排序?

javascript - 目标结帐页面,但不是 Woocommerce 中的订单接收页面

php - 在 laravel 框架中使用 native PHP 类

php - curl_exec成功,但输出文件为空