3

他のサイトからの許可を得て、別のサイトでホストされている画像を定期的にダウンロードし、寄稿サイトへの外部リンクを使用して、私たちのサイトのウェブカメラ写真のコレクションに含めることになっています。

これは他のどのサイトでも問題にはなりませんでしたが、この特定のサイトでは、画像を開いてサイズを変更し、サーバーに保存することができません。<img src="http://THEIRIMAGE />サイトのページにプレーンな ole を作成でき、正常に動作するため、ホットリンクの問題ではありません。

私は$img = new Imagick($sourceFilePath)他のすべてと同じように直接使用しようとしましたが、PHPのコピーを使用しようとしたり、cURLを使用して画像をコピーしようとしたりしましたが、そうすると、ページがタイムアウトしてまったく結果が得られません.

問題の画像は次のとおりです: http://island-alpaca.selfip.com:10202/SnapshotJPEG?Resolution=640x480&Quality=Standard

私が言ったように、私はこの種のことを他のいくつかのウェブカメラで行うことができますが、これでは機能しません。どんな助けでも大歓迎です。

ありがとうございました。

4

2 に答える 2

1

帯域幅とサーバーの負荷を減らすために、一部のサイトは特定のボットがコンテンツにアクセスするのをブロックしています。cURLリクエストは、リファラー(通常)やユーザーエージェントなどを含む実際のブラウザーをより厳密に模倣する必要があります。リダイレクトがあり、リダイレクトに従うようにcURLに指示していない可能性もあります。

次のように、より多くのオプションを設定してみてください。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

それでも問題が解決しない場合は、実際のブラウザからユーザーエージェントを取得してそこに配置し、違いが生じるかどうかを確認してください。

于 2012-10-04T18:50:32.483 に答える
0

Try using file_get_contents().

for example:

$url = 'http://island-alpaca.selfip.com:10202/SnapshotJPEG?Resolution=640x480&Quality=Standard';
$outputfile = "tmp/image" . date("Y-m-d_H.i.s");
$cmd = "wget -q \"$url\" -O $outputfile";
exec($cmd);
$temp_img = file_get_contents($outputfile);
$img = new Imagick($temp_img);

Can you try this and get back to me?

于 2012-10-04T18:51:53.750 に答える