addArguments(['--headless', '--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage']); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(\Facebook\WebDriver\Chrome\ChromeOptions::CAPABILITY, $options); //disable javascript if $js is false if (!$js) $capabilities->setCapability('javascriptEnabled', false); try { $driver = RemoteWebDriver::create($serverUrl, $capabilities); $driver->get($target); //hide scroll bars $driver->executeScript('document.body.style.overflow = "hidden";'); //set screenshot size to 1920x1080 //$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768)); //if $viewport is set, set window size if ($viewport) { $viewport = explode('x', $viewport); $driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension($viewport[0], $viewport[1])); } else { $driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768)); } addToLog("$ip\tRequested $target with viewport " . implode('x', $viewport) . " and js " . ($js ? 'enabled' : 'disabled')); } catch (Exception $e) { header('HTTP/1.0 500 Internal Server Error'); addToLog("$ip\tRequested $target but resulted in error:\t" . $e->getMessage()); echo 'Error: ' . $e->getMessage(); exit; } // take screenshot and save to file //header for png header('Content-Type: image/png'); echo $driver->takeScreenshot(); break; default: echo renderTemplate('index.html.php'); break; }