Как сделать снимок скриншотов веб-сайтов с помощью PHP?

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

Есть ли api, я могу просто ввести URL-адрес веб-сайта, на котором я хочу сделать снимок экрана, и вернуть его как образ с помощью PHP?

Отъезд http://www.thumbalizr.com/apitools.php

Вот пример: http://api.thumbalizr.com/?url=http://www.google.com.au&width=250

Он очень прост в использовании и имеет бесплатный план для небольших вариантов использования с другими планами, которые должны отвечать более передовым или требующим больших потребностей. Конечно, есть сотни других услуг. Но Thumbalizer является самым популярным (согласно Google) и очень прост в использовании.

Вы были бы удивлены, сколько программ автоматизации скриншотов есть там: вот небольшая небольшая статья, в которой сравниваются пять основных поставщиков: сайт сравнения скриншотов API .

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

Кроме того, на одном сайте есть пример кода PHP .

вы можете использовать сервис http://www.screenshotmachine.com . Он имеет простой API на основе HTTP GET. Вот страница документации: http://www.screenshotmachine.com/apiguide.php

Вы можете сделать свой скриншот API с помощью:

PhantomJS

или:

SlimerJS

wget может получить вас там, где вы хотите быть. если вы можете добраться до терминала, websnapr.com довольно прост в использовании. вы захотите зарегистрироваться для ключа, но они довольно просты в использовании.

wget -O MYFILENAME.png http://images.websnapr.com/?url=MYURL&size=s&nocache=82&key=MYKEY 

Ну, PhantomJS – это браузер, который можно легко разместить на сервере и интегрировать в php. Код можно найти в WDudes. Они включают в себя множество дополнительных функций, таких как определение размера изображения, кеш, загрузка в виде файла или отображения в img src и т. Д.

 <img src=”screenshot.php?url=google.com” /> 

Параметры URL

  • Ширина и высота: screenshot.php? Url = google.com & w = 1000 & h = 800

  • С обрезкой:
    screenshot.php? URL = google.com & ш = 1000 & ч = 800 & clipw = 800 & cliph = 600

  • Отключить кеш и загрузить свежий screesnhot:
    screenshot.php? URL = google.com и кэш = 0

  • Чтобы загрузить изображение вместо отображения: screenshot.php? Url = google.com & download = true

Вы можете увидеть учебник здесь: Захват Скриншот веб-сайта с использованием PHP без API

Я хотел добавить еще один вариант в микс, службу, которую я построил для этой цели, которая бесплатна для основного использования – URL Sensei . Он предоставляет API, поэтому вы можете делать запросы на получение URL-адресов скриншотов, размещенных на CDN для вас. Он построен с использованием Phantom / SlimerJS – но сложная часть делала его быстро и надежно сжимала. Дайте мне знать, что вы думаете!

Существует много проектов с открытым исходным кодом, которые могут создавать скриншоты и эскизы веб-сайтов, которые можно вызывать из PHP. Например, PhantomJS, webkit2png и т. Д.

Большая проблема с этими проектами заключается в том, что они основаны на более старой технологии браузера и имеют проблемы с рендерингом многих сайтов, особенно сайтов, которые используют webfonts, flexbox, svg и другие дополнения к спецификациям HTML5 и CSS за последние пару месяцев / лет.

Я пробовал несколько сторонних сервисов, и большинство из них основано на PhantomJS, что означает, что они также создают скриншоты низкого качества. Лучший сторонний сервис для создания скриншотов веб-сайтов – urlbox.io . Это платная услуга, хотя есть бесплатная 7-дневная пробная версия, чтобы проверить ее, не совершая какой-либо оплачиваемый план.

Вот ссылка на документацию , и ниже приведены простые шаги, чтобы заставить ее работать на PHP с композитором. Если вы не используете композитор, просто скопируйте код из репозитория github

 // 1 . Get the urlbox/screenshots composer package (on command line): composer require urlbox/screenshots // 2. Set up the composer package with Urlbox API credentials: $urlbox = UrlboxRenderer::fromCredentials('API_KEY', 'API_SECRET'); // 3. Set your options (all options such as full page/full height screenshots, retina resolution, viewport dimensions, thumbnail width etc can be set here. See the docs for more.) $options['url'] = 'http://stackoverflow.com/questions/4235638/how-to-take-thumbnail-screenshots-of-websites-using-php'; // set url to this very page! $options['thumb_width'] = 400; // set thumbnail to be 400px wide $options['full_page'] = true; // set full_page mode on, will instruct urlbox to take a full height screenshot // 4. Generate the Urlbox url $urlboxUrl = $urlbox->generateUrl($options); // $urlboxUrl is now 'https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail-screenshots-of-websites-using-php&full_page=true&thumb_width=400' // 5. Now stick it in an img tag, when the image is loaded in browser, the API call to urlbox will be triggered and a nice PNG screenshot will be generated! <img src="$urlboxUrl" /> , // 1 . Get the urlbox/screenshots composer package (on command line): composer require urlbox/screenshots // 2. Set up the composer package with Urlbox API credentials: $urlbox = UrlboxRenderer::fromCredentials('API_KEY', 'API_SECRET'); // 3. Set your options (all options such as full page/full height screenshots, retina resolution, viewport dimensions, thumbnail width etc can be set here. See the docs for more.) $options['url'] = 'http://stackoverflow.com/questions/4235638/how-to-take-thumbnail-screenshots-of-websites-using-php'; // set url to this very page! $options['thumb_width'] = 400; // set thumbnail to be 400px wide $options['full_page'] = true; // set full_page mode on, will instruct urlbox to take a full height screenshot // 4. Generate the Urlbox url $urlboxUrl = $urlbox->generateUrl($options); // $urlboxUrl is now 'https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail-screenshots-of-websites-using-php&full_page=true&thumb_width=400' // 5. Now stick it in an img tag, when the image is loaded in browser, the API call to urlbox will be triggered and a nice PNG screenshot will be generated! <img src="$urlboxUrl" /> 

Например, например, urlbox url, который будет генерировать скриншот на всю высоту этой самой страницы:

https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail- скриншоты-оф-сайтов, используя PHP-& full_page = истина & thumb_width = 400

и вот результирующий скриншот (сильно сжатый через imgur: /)

полный скриншот страницы вопроса stackoverflow.com powered by urlbox.io