Создание снимка экрана веб-сайта на стороне сервера на арендованном сервере Linux бесплатно

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

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

Есть ли способ просто сделать скриншоты самому и, возможно, позже их кэшировать или что-то в этом роде? Я использую PHP, но не ограничиваюсь этим; Я просто нахожусь на сервере Linux, поэтому соответствующие функции GD не работают. Помощь! :)


person casraf    schedule 27.07.2010    source источник


Ответы (5)


PhantomJs - это решение

if(phantom.state.length === 0){
  phantom.state = '0_home';
  phantom.open('http://www.mini.de');
}
else if(phantom.state === '0_home'){
  phantom.viewportSize = {width: 800, height: 600};
  phantom.sleep(2000);
  phantom.render('home.png');
  phantom.exit(0);
}
person cromulus    schedule 18.10.2011
comment
Я думаю, что phantomjs не должно работать без проблем. Если webkit может отобразить страницу, phantomjs сможет сделать снимок экрана. - person cromulus; 04.11.2011

http://cutycapt.sourceforge.net/

CutyCapt - это небольшая кроссплатформенная утилита командной строки для захвата изображения WebKit веб-страницы в различные векторные и растровые форматы, включая SVG, PDF, PS, PNG, JPEG, TIFF, GIF и BMP.

PHP-api не существует, но вы всегда можете использовать его с помощью функций PHP exec.

person Kirzilla    schedule 27.07.2010
comment
Думаете, я смогу запустить его с размещенным сервером? - person casraf; 29.07.2010
comment
Timthumb предоставляет доступ к cutycapt, который может помочь решить проблему отсутствия PHP-api. - person Nick; 28.02.2013

Вот лучший сценарий с использованием phantomJS 1.5

var page = require('webpage').create();

page.open('http://www.google.com', function() {

    page.viewportSize = {width: 1024, height: 768};
    page.render('screenshot.png');
    phantom.exit();
});
person Brad    schedule 19.04.2012
comment
Брэд: вам может понадобиться PhantomJS 1.5. В той версии у меня это работало нормально. - person Husky; 24.04.2012
comment
Вы правы .. Это будет работать только на версии 1.5 Спасибо за пояснение. - person Brad; 26.04.2012

Одно из решений в 2017 году:

https://github.com/GoogleChrome/puppeteer

пример:

const puppeteer = require('puppeteer');

(async() => {

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});

browser.close();
})();
person Weihang Jian    schedule 18.08.2017

Поскольку у вас есть собственный сервер Linux, лучший способ - запустить собственный сервис скриншотов без ограничений. Вот простое решение для запуска его на вашем сервере: https://github.com/filovirid/screenshot_server

Он создает API, чтобы вы могли получить к нему доступ отовсюду.

person Filo    schedule 29.03.2020