Блог веб-разработчика: в помощь программистам

Делаем скриншоты сайтов у себя на странице

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

Итак первое и самое главное – средствами PHP делать скриншоты сайтов нельзя!

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

Для своих проектов я использую сервис сайта
http://www.artviper.net

и сейчас пошагово объясню как работать с их сервисом, на сайте всё понятно расписано,но не все понимают на английском
Итак для начала идём по ссылке

http://www.artviper.net/registerAPI.php

и регистрируемся, необходимо вбить свой логин, емеил и урл сайта с которого будут идти запросы на создание скриншотов.
После этого на указанный емеил приходит письмо с ссылкой для подтверждения регистрации, после перехода по ней вам придёт ещё одно письмо, в котором рассказывается как использовать данный API и ваш персональный User ID и Secret Key.

Что бы не ходить вокруг да около, вот пример работы с их API

 
<?php
$uID = '889d917202b3579';
$secretKey = '90acb7c0';
$url="http://webphp.ru";
$hash=md5($url.$uID.$secretKey);
?>
<input type=image src="http://www.artviper.net/screenshots/screener.php?url=<? echo $url; ?>&h=190&w=200&userID=889d917202b3579&hash=<?=$hash;?>" width="200px" height="190px" alt="" name="sub">


теперь немного поясню
$uID -персональный id который пришёл в письме
$secretKey -секретный ключ который пришёл в письме
$url – адресс страницы которую нам нужно отскриншотить
$hash – обязательный параметр, в котором нам нужно передать MD5 хеш перечисленных переменных, обязательно соблюдать данный порядок.

Теперь дальше, в примере я вставляю скриншот прямо с их сайта, передаём нужные переменные их скрипту, помимо вышеописанных вы видите ещё h и w, что является высотой и шириной скриншота, который возвращает нам сервис(данные параметры не являются обязательными, если их не указать то сервис автоматически сформирует размер, который посчитает нужным)

А вот ещё несколько необязательных параметров, которые я не использовал, но которые могут некоторым пригодиться

&q – качество возвращаемого jpeg скриншота. можно задать значение в пределах от 30 и до 90
&d – задержка перед созданием скриншота
&sdx – ширина виртуального экрана с которого будет сделан скриншот, ну или как это правильно обозвать (разрешение монитора под которым делается скриншот) Может принимать значения 640, 800, 1024, 1280
&sdy - Тоже самое только высота.

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

  • Поправьте линк на страницу этого сервиса.

    Этот комментарий можно будет удалить :)

  • При регистрации невысылаеют некакого Secret Key только User ID пришел. Почему так? Где взять Secret Key ?

  • После регистрации приходит письмо с темой Registration complete и дальше ман по работе и в самом низу
    Your user information

    User ID: хххх
    Secret Key: хххх

    если не пришло то попробуйте заново зарегиться или написать им в супорт

  • Есть еще такой сервис – Websnapr, он тоже довольно популярен и под него есть готовые плагины для распространённых CMS (http://drupal.org/project/websnapr – например, плагин для Drupal, мы на своем бложеке его как раз используем)

  • Спасибо, скриншоты именно то что я и искал…)
    У вас я нашел всё что мне было надо, спасибо вам…)

  • а скрины с flv таким образом можно делать?

  • Спасибо большое за материал. Начал использовать этот сервис, а то другие или не пашут или нестабильны

  • интересно, а как они это делают?
    прикручен C++???

    • Язык тут не причём :) просто юзают АПИ любого браузера, для php можно тоже сделать плагин php-ff – типа того и будут Вам скрины :)

  • вот вам наглядный пример – http://paid.pix-art.ru/thumb.php :)

  • Хм. А http://browsershots.org/ чем не устроил то? Если со скоростью генерации страницы все ок, плюс с каналом (это условие, при котором до снимка страница в браузерах загрузится) будет вам набор скринов. если нужна пачка итоговых скринов – то очень хороший вариант имхо.

  • хорошая функция. обязательно воспользуюсь. спасибо автору :)

  • FireShot – удобное расширение Firefox для захвата страниц

  • Классная стать. Ссылка до сих не корректная, но на сайте легко разобраться. Инструкция по генерации ссылки кстати тоже уже другая, намного проще.

You can follow any responses to this entry through the RSS 2.0 feed.