не получаеться получить картинку по http

Тема в разделе "PHP", создана пользователем асс, 5 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Добрый вечер.
    Как получить картинку с сайта через php

    есть код курл например

    PHP:
     curl_setopt($cUrlCURLOPT_URL$url);
        
    curl_setopt($cUrlCURLOPT_PORT$port);
        
    curl_setopt($cUrl,CURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($cUrlCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
        
    curl_setopt($cUrlCURLOPT_TIMEOUT$timeout);
        
    $content curl_exec($cUrl);
    но вот как сделать чтоб картинку по указаному урлу была заргужена на комп.

    если пробую copy то получаю
    failed to open stream: HTTP request failed! HTTP/1.1 403
    Forbidden in


    тоесть нужно имитировать человека
    PHP:
    curl_setopt($cUrlCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
     
  2. qwyjibo

    qwyjibo Постоялец

    Регистр.:
    27 янв 2009
    Сообщения:
    64
    Симпатии:
    12
    Вот так можно :):
    PHP:
    <?php

    $ch 
    curl_init ("http://static.php.net/www.php.net/images/php.gif");
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec ($ch);
    curl_close ($ch);

    $fp fopen("php.gif",'w');
    fwrite($fp$rawdata);
    fclose($fp);

    ?>
     
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221

    У меня там jpg и он его сохраняет пустой :confused:
     
  4. kozax89

    kozax89 Постоялец

    Регистр.:
    12 июл 2009
    Сообщения:
    135
    Симпатии:
    4
    так пиши вместо .gif -> .jpg везде
     
  5. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Так и делал. Но он сохраняет ее пустой, вернее пишет не верный формат.

    Я решил сделать через курл, теперь все работает. :)
     
  6. qwyjibo

    qwyjibo Постоялец

    Регистр.:
    27 янв 2009
    Сообщения:
    64
    Симпатии:
    12
    Хм, вроде через курл все и сделано... Напиши свой код пожалуйста :).
     
  7. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    PHP:
    $curl curl_init();
    curl_setopt($curlCURLOPT_SSL_VERIFYPEERFALSE);
    curl_setopt($curlCURLOPT_HEADER0);
    curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
    //curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1");
    curl_setopt($curlCURLOPT_USERAGENT"Opera/9.5 (Windows NT 5.1; U; en)");
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    curl_setopt($curlCURLOPT_COOKIEFILE"cookiefile$numberthreads");
    curl_setopt($curlCURLOPT_COOKIEJAR"cookiefile$numberthreads"); # SAME cookiefile
    curl_setopt($curlCURLOPT_URL$kartinka); # this is where you first time connect - GET method authorization in my case, if you have POST - need to edit code a bit
    curl_setopt($curlCURLOPT_ENCODING"gzip,deflate"); // "gzip,deflate");
    $h = array(         'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                        
    'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
                        
    'Accept-Charset: windows-1251;q=0.7,*;',
                        
    'Keep-Alive: 300',
                        
    'Cache-Control: max-age=0');
    curl_setopt($curl,CURLOPT_HTTPHEADER$h);
    curl_setopt($curlCURLOPT_AUTOREFERER1);
    curl_setopt($curlCURLOPT_SSL_VERIFYHOST0);
    curl_setopt($curlCURLOPT_COOKIESESSIONtrue);
    curl_setopt($curlCURLOPT_TIMEOUT30);
    curl_setopt($curlCURLOPT_VERBOSE1);
    $xxx curl_exec($curl);
    $f fopen('/fotos/ss.jpg'"w");
        @
    fputs($f$xxx);
        @
    fclose($f);
     
  8. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    как вариант для имитации человека можно использовать snoppy, тогда код будет выглядеть так:
    PHP:
    <?php
    include_once "Snoopy.class.php";
    $s = new Snoopy();
    $s->fetch("http://www.mysite.com/img.jpg");
    file_put_contents("img.jpg"$s->results);
    ?>
     
    асс нравится это.
  9. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    354
    Симпатии:
    42
    но понаписал :)

    может грабинг запрещен?

    добавь вот такое:

    PHP:
    $Ref="http://site.ru/страница где показывается картинка";
    curl_setopt($chCURLOPT_REFERER,$Ref);
     
  10. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221

    Ну да, в первом посте я так и написал что есть ошибка, доступ запрещен

    если пробую copy то получаю
    failed to open stream: HTTP request failed! HTTP/1.1 403
    Forbidden in

    доступ запрещен качалкой.
    А вообще с других все качается нормально.
     
Статус темы:
Закрыта.