Я делал с помощью расширения к гугл-хрому. Скрипт с помощью exec() запускает хром, в хроме включено расширение, завязанное на chrome.tabs, devtools.network.onRequestFinished и в особенности на chrome.tabCapture.capture. Когда событие onUpdate срабатывает с результатом finished на вкладке, запускается таймер на съемку скриншота. Если network фиксирует новый запрос из браузера, таймер перезапускается. Когда все запросы закончились, делается снимок экрана с помощью tabCapture и отправляется методом POST на сервер. Когда скрипт находит на сервере результат, берет его и отдает.
Вряд ли кто откроет "секрет". Думаю, не сложно. Главный сервер на Unix like системе принимает задачи, ставит в очередь и распределяет по другим серверам, на которых стоят разные ОС с разными браузерами. Те получают адрес, открывают, делают снимок, отсылают обратно. Или на том же сервере несколько виртуальных систем, не важно. На s-shot.ru вроде даже нет выбора браузера и его версии, как видел на другом сервисе, так что ещё проще. [vs], ага, быстрей меня написал )