Как скачать картинки с сайта который требует передачу куков.

18.09.2018 19:35:42

Очень неудобно смотреть комиксы с сайтов набитых рекламой, особенно с телефона.
Можно было бы заморочиться с плагином для браузера, но я решил сделать как проще для меня.

Этот набор состоит из двух скриптов, первый скачивает все картинки, второй выдает их на экран с кнопками "следующая" и "предыдущая".


По сути все довольно стандартно, кроме того, что нужно было через cookie передавать ageRestrict=17

download.php (Download)

 <?php

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');

  $sUrlBase = 'https://oddler.ru/'; // Адрес сайта откуда качать
  $sUrl = 'https://oddler.ru/~Oglaf/'; // Полная ссылка на страницу откуда качать
  
  $opts = array(
    'http'=>array(
      'method'=>"GET",
      'header'=>"Accept-language: en\r\n" .
              "Cookie: ageRestrict=17\r\n"
    )
  );
  $context = stream_context_create($opts);
  
  for($i = 1; $i <= 424; $i++)
  {
    $n = 3 - strlen($i);
    $sName = str_repeat('0', $n) . $i;

    $sText = file_get_contents($sUrl.$i, FALSE, $context);
    $sPattern  = '|<img id="mainImage" src="(.*?)"|si';
    preg_match_all($sPattern, $sText, $aMatches, PREG_SET_ORDER);
    
    //copy($sUrlBase.$aMatches[0][1], 'out/'.$sName.'.jpg');
  }
?>

DONE
 
 
 

index.php (Download)

 <?php

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');
  
  $id = isset($_REQUEST['id'])?$_REQUEST['id']:1;
  $id = (int) $id;

  $n = 3 - strlen($id);
  $sName = str_repeat('0', $n) . $id;
?>
<style type="text/css">
table
{
    width: 600px;
    margin-top: 20px;
}
</style>
<div>
    <img src="/out/<?=$sName?>.jpg" alt="" />
</div>
<div>
    <table>
        <tr>
            <td>
                <a href="/?id=<?=($id - 1)?>">prev</a>
            </td>
            <td>
                <a href="/?id=<?=($id + 1)?>">next</a>
            </td>
        </tr>
    </table>
    
</div>


Категории: PHP, Script / Tool
Пометки: грабер картинок, grabber
Яндекс.Метрика