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

Тема в разделе ".:: Готовые решения", создана пользователем terkin, 7 янв 2009.

Статус темы:
Закрыта.
  1. terkin

    terkin

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

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

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

    Для своих проектов я использую сервис сайта
    http://www.artviper.net
    и сейчас пошагово объясню как работать с их сервисом, на сайте всё понятно расписано,но не все понимают на английском :)
    Итак для начала идём по ссылке
    http://www.artviper.net/registerAPI.php
    и регистрируемся, необходимо вбить свой логин, емеил и урл сайта с которого будут идти запросы на создание скриншотов.
    После этого на указанный емеил приходит письмо с ссылкой для подтверждения регистрации, после перехода по ней вам придёт ещё одно письмо, в котором рассказывается как использовать данный API и ваш персональный User ID и Secret Key.

    Что бы не ходить вокруг да около, вот пример работы с их API
    PHP:
    <?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 - Тоже самое только высота.


    Правильным подходом будет сохранение данных скриншотов себе на сайт, и дальнейшее использование уже со своего сервера, ну это уже личное дело каждого. Я думаю что достаточно понятно объяснил как использовать данный сервис, если у кого то остались вопросы, то я постараюсь на них ответить
     
    beldvd, Кристя, iehon и ещё 1-му нравится это.
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Небольшой оффтоп: если имеется собственный сервер или VPS и необходимость делать тумбы в большом кол-ве, лучше поднять такой сервис у себя - не будешь ни от кого зависеть и никаких заморочек с функционированием стороннего сервиса, очередью, скачиванием тумб к себе, пропажам на канале и т.п.
     
  3. skurudo

    skurudo Прохожие

    Порекомендуйте готовое ПО для поднятия такой штуки у себя.
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Для поднятия такого сервиса подойдёт iecap
    http://iecapt.sourceforge.net/
    или khtml2png
    http://khtml2png.sourceforge.net/
    и с php через командную строку:
    PHP:
    <?
    exec('Z:\usr\local\iecapt\IECapt.exe --url=https://www.nulled.cc/ --min-width=1100 --out=nulled_snapshot.png');
    ?>
     
    beldvd, freezor и dotsenko нравится это.
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Не знаю готового - у меня самопис (на основе оперы и виртуального дисплея).
    Если интересно, могу поскрести по сусекам и выложить.
     
  6. skurudo

    skurudo Прохожие

    Да, было бы здорово. Надеюсь, решение не будет совпадать с polyetilen.
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Я же сказал - самопис.
    Принцип простой: стартуешь Х на виртуальном дисплее, в нём запускаешь оперу, в опере открываешь сайт, делаешь скриншот, обрезаешь/уменьшаешь при помощи imagemagick и сохраняешь.
    Собственно весь самопис сводился к написанию небольшого скрипта на баше для автоматизации вышеописанного процесса.

    Точнее смогу сказать после праздников, так как вся кухня осталась на работе.
     
  8. XeonN

    XeonN

    Регистр.:
    13 ноя 2006
    Сообщения:
    369
    Симпатии:
    150
    Ну средствами PHP нет а вот с помошью php-gtk-2.х запросто, нужно скомпилировать с поддержкой --with-mozembed

    Ссылка в тему:
    http://www.hackdiary.com/2004/06/13/taking-automated-webpage-screenshots-with-embedded-mozilla/

    Да где то у меня есть класс под это дело но искать долго если сильно надо будет найду, с phpclasses скачан :)
     
  9. oneathome

    oneathome

    Регистр.:
    6 фев 2007
    Сообщения:
    159
    Симпатии:
    5
    3D где нибудть делают

    Где делают 3D скриншоты
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    3D с плоского изображения :eek:
    Это как?
     
Статус темы:
Закрыта.