CURL Изображение скребок перенаправляется?

У меня есть функция, которая пытается получить изображения с веб-страницы с помощью cURL. Это работает для большинства сайтов, но есть некоторые, которые перенаправляют скрипт как-то. Веб-сайт, который используется в качестве примера в моем коде ниже, будет перенаправлять скрипт на определенную страницу своей веб-страницы. Если я отключаю перенаправление или ограничиваю его с помощью CURLOPT_MAXREDIRS, я не получаю возвращаемого содержимого … Что я здесь не так делаю?

            function curl($url){

$headers[]  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
$headers[]  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,
*/*;q=0.8";
$headers[]  = "Accept-Language:en-us,en;q=0.5";
$headers[]  = "Accept-Encoding:gzip,deflate";
$headers[]  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[]  = "Keep-Alive:115";
$headers[]  = "Connection:keep-alive";
$headers[]  = "Cache-Control:max-age=0";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, true );
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt' );
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt' );
//curl_setopt($curl, CURLOPT_MAXREDIRS, 1);

$data = curl_exec( $curl );
//$header = curl_getinfo( $curl );

curl_close($curl);

return $data;
}

$data = curl( "http://www.missselfridge.com/en/msuk/product/dress-shop-299048/view-all-299126/dark-floral-panel-midi-dress-3273361" );
$images = array();
preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $data, $images);

...
//then for each image in images, is displayed in html.

Заголовки моих браузеров @Samuel Fullman

Заголовки ответа

CACHED_RESPONSE true
Cache-Control   max-age=0, no-cache, no-store
Connection  keep-alive
Content-Encoding    gzip
Content-Language    en-US
Content-Length  17121
Content-Type    text/html; charset=UTF-8
Date    Tue, 16 Sep 2014 16:27:42 GMT
Expires Tue, 16 Sep 2014 16:27:42 GMT
Pragma  no-cache
Vary    Accept-Encoding

Заголовки запроса

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control   max-age=0
Connection  keep-alive
Cookie ...
Host    www.missselfridge.com
User-Agent  Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0

0

Решение

Возможно, что HTTP-REFERRER не является одной из их собственных страниц, и поэтому они ограничивают ваш доступ. Я не вижу никакого значения реферера в ваших заголовках.

Тем не менее, у вас есть способ решить эту проблему. Очевидно, у вас есть сайт, который работает, и это не работает. Для сайта, который не работает, вы можете просмотреть URL изображения в вашем браузере? Если нет, то сам URL может быть плохим (не исключайте этого). Если вы можете, тогда сравните заголовки, отправленные и полученные в вашем браузере (через Firebug или другое приложение), и сравните.

0

Другие решения

Других решений пока нет …