Создаем скриншот сайта через URL, используя PageSpeed Insights API

Задача следующая, нужно сделать скриншот сайта по урлу и полученную картинку сохранить в файл или вывести на экран.

Поискав информацию по этой теме, нашел что можно получить скриншот используя сервис гугла, Google PageSpeed Insights API

Получение скриншота сайта через URL.

Выкладываю рабочий код


<?php
// адрес сайта
$url = "https://small-whale.org";

// получение данных с сервиса
$api_data_ = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$url&screenshot=true");

// расшифровка данных json
$api_data = json_decode($api_data_, true);

// данные снимка
$screenshot = $api_data['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot);

// сохраняю полученный снимок в файл
base64_to_file($screenshot, 'screen.jpg');
// отображаем изображение из base64
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";

// функция конвертации base64 в файл
function base64_to_file($base64_string, $output_file) {
  // open the output file for writing
  $ifp = fopen( $output_file, 'wb' );

  // разбиваем строку
  // $data[ 0 ] == "data:image/png;base64"
  // $data[ 1 ] == <actual base64 string>
  $data = explode( ',', $base64_string );

  fwrite( $ifp, base64_decode($data[0]) );

  // закрываем файл
  fclose( $ifp );

  return $output_file;
}
?>

как видно из кода, идет получение контента по адресу

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$url&screenshot=true

где передаются два параметра

url — урл сайта, с которого получить скриншот

screenshot — маркер, который указывает что будет возвращаться скриншот, ставим true

Ответ идет в json формате, среди полученных данных есть тайт сайта, показатели производительности и много другое, к примеру рекомендации по оптимизации CSS.

Данный запрос можно использовать для сбора статистики по сайту, практически там данные с Google Pagespeed по определенному сайту

Оцените статью
Добавить комментарий

  1. pyparty

    Удалили сервис вроде.

    Ответить
    1. admin автор

      проверил, да, все верно, на 02.06.2011 сервис не активен
      гугл убрал тот сервис и создал новый
      док
      https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest
      ссылка
      https://servicemanagement.googleapis.com/$discovery/rest?version=v1
      надо смотреть ту инфу, и писать новый код под скрин

      Ответить