/** * Get Html throught CasperJs * @param string $url * @param array $params - [ * 'proxy' => ['host' => '', 'port' => '', 'login' => '', 'password' => ''], * 'waitForSelector' => ['#idOrOtherSel' => 1000] * ] * @return array */ public static function getHtmlByCasper($url, array $params = []) { $options = []; if (!empty($params['proxy'])) { $options['proxy'] = "{$params['proxy']['host']}:{$params['proxy']['port']}"; $options['proxy-auth'] = "{$params['proxy']['login']}:{$params['proxy']['password']}"; } elseif (!empty(Proxy::$proxy)) { $proxy = current(Proxy::$proxy); $options['proxy'] = "{$proxy['host']}:{$proxy['port']}"; $options['proxy-auth'] = "{$proxy['login']}:{$proxy['password']}"; } $casper = new Casper(Yii::$app->params['casperJsPath']); $casper->setUserAgent(self::WEB_BROWSER); $casper->setOptions($options); $casper->start($url); if (!empty($params['waitForSelector'])) { $casper->waitForSelector(key($params['waitForSelector']), current($params['waitForSelector'])); } $casper->run(); return ['currentUrl' => $casper->getCurrentUrl(), 'html' => $casper->getHTML()]; }