Принимая скриншот веб-сайта, серверный сервер на арендованном Linux сервере, бесплатно
Итак, сейчас я не могу позволить себе платить за любую услугу. Я хочу, чтобы иметь возможность снимать скриншоты с помощью моего арендованного сервера, который основан на Linux, и выводить их на экран.
Я знаю, что есть много услуг, которые делают это, но у них обычно есть ограничения или водяные знаки, или вам нужно ждать, пока ваш скриншот будет снят с очереди.
Есть ли какой-либо способ просто сделать скриншоты самостоятельно и, возможно, позже кешировать их или что-нибудь еще? Я использую PHP, но я не ограничиваюсь этим; Я просто на сервере Linux, поэтому соответствующие функции GD не будут работать. Помогите!:)
Ответы
Ответ 1
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);
}
Ответ 2
http://cutycapt.sourceforge.net/
CutyCapt - небольшая кросс-платформенная утилита командной строки для захвата WebKit-рендеринга веб-страницы в различные векторные и растровые форматы, включая SVG, PDF, PS, PNG, JPEG, TIFF, GIF и BMP.
Нет PHP-api, но вы всегда можете использовать его с помощью функций PHP exec
.
Ответ 3
Вот лучший script с использованием 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();
});
Ответ 4
Одно из решений в 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();
})();