1

次のリンクからファイルをダウンロードしようとしています 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; 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 ファイルにはデータがありません。

 $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 に答える