Захват изображения с ложным реферером

В данный момент я изо всех сил пытаюсь захватить изображение ... звучит глупо, но посмотрите эту ссылку: P

http://manga.justcarl.co.uk/A/Oishii_Kankei/31/ 1

Если вы получаете URL-адрес изображения, изображение загружается. Вернитесь, похоже, все работает нормально, но это просто браузер загружает кешированное изображение.

Раньше приложение работало нормально, я думаю, они реализовали какую-то проверку Referer на своих изображениях. Итак, я нашел некоторый код и придумал следующее...

$ref = 'http://www.thesite.com/'; 
$file = 'theimage.jpg';
$hdrs = array( 'http' => array(
 'method' => "GET",
 'header'=> "accept-language: en\r\n" . 
  "Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5\r\n" .
  "Referer: $ref\r\n" . // Setting the http-referer
  "Content-Type: image/jpeg\r\n" 
 )
);
// get the requested page from the server
// with our header as a request-header
$context = stream_context_create($hdrs);

$fp = fopen($imgChapterPath.$file, 'rb', false, $context);
fpassthru($fp);
fclose($fp);

По сути, это создание ложного реферера. Все, что я получаю обратно, это куча тарабарщины (спасибо fpassthru), поэтому я думаю, что это получает изображение, но я боюсь сказать, что понятия не имею, как выводить/отображать собранное изображение.


person Mr Carl    schedule 10.06.2010    source источник


Ответы (1)


Попробуйте вызвать это перед вызовом fpassthru:

header('Content-Type: image/jpeg');

Это сообщит вашему браузеру, что следующие данные являются изображением в формате JPEG. В противном случае PHP автоматически скажет, что это HTML-документ, что явно неверно.

Примечание. Помните, что все вызовы header должны быть сделаны до того, как что-либо еще будет выведено в браузер, а это означает, что вы не можете иметь никаких вызовов echo или print до вызова header, и вы не можете вообще ничего делать перед вызовом header. открывающий тег <?php.

person Emil Vikström    schedule 10.06.2010
comment
Странно, он отправляет Referer с помощью этого метода, а изображение все еще загружается. К сожалению, я загружаю изображение в html-документ, поэтому я не могу использовать этот метод, похоже, больше работы ^^ хе-хе, спасибо за помощь - person Mr Carl; 10.06.2010