Товарищ спросил меня, как ему на PHP получить некий сайт в виде картинки? Я задумался — и правда, как? Только через phantomjs. Как мы помним, phantomjs — эмулятор браузера, который для сайтов делает вид, что это настоящий пользователь браузером зашел, но на самом деле его действия управляются не пользователем, а JS-скриптом. В нашем случае совсем простым:
getscreen.js
var W=1280,H=1600,URL='https://ya.ru',SHOTNAME='000del.png';
var system=require('system');
for(var i=1;i if(-1!=a.indexOf('=')) { var l=a.split('='),b=a.substring(l[0].length+1); a=l[0];
if(a=='url') { URL=b; continue; }
if(a=='shotname') { SHOTNAME=b; continue; }
if(a=='width') { W=1*b; continue; }
if(a=='height') { H=1*b; continue; }
}
}
var page=require('webpage').create();
page.settings.userAgent="Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0";
page.viewportSize={width:W,height:H};
page.onLoadFinished=function(status){ page.render(SHOTNAME); phantom.exit(0); };
page.open(URL);
Запускаем из консоли:
phantomjs --debug=false --disk-cache=false --ssl-protocol=any getscreen.js url="http://ya.ru" width=320 height=200 shotname="shot.jpg"
Получаем shot.jpg:
Если кому-то захочется сделать публичный сервис (мне не хочется), то следует установить phantomjs у себя на хостинге, сложить в папку shot/ файлы getscreen.js и index.php, и вот пример, как работать с phantomjs из PHP:
И открывать браузером или wget: http://мойсайт/shot/index.php?url=lleo.me&width=800&height=600&type=jpg
Спасибо за внимание, может кому-то было полезно.