createClient($url); // Запрос по базовому uri $response = $client->get('', [ 'on_stats' => function (TransferStats $stats) use (&$redirectUrl) { $redirectUrl = $stats->getEffectiveUri(); } ]); print("Redirect $url -> $redirectUrl" . PHP_EOL); $url .= substr($url, -1) == '/' ? '':'/'; $url .= "sveden/education/"; print("Parsing for $url" . PHP_EOL); $response = $client->get($url); $httpCode = $response->getStatusCode(); print("\033[94mHTTP-code: $httpCode\033[0m\n"); $html = $response->getBody()->getContents(); } catch (ClientException | RequestException | ConnectException | ServerException | MalformedUriException $e ) { print("\033[91mHTTP-code: ". $e->getCode(). "\033[0m\n"); $html = $this->handleException($url, $site); } finally { return $html; } } /** * Обработка исключения * Повторная попытка спомощью CurlHelper * @param string $url * URL сайта * @param array $site * @return string */ private function handleException(string $url, array $site) : string { $curlHelper = new CurlHelper($url, $site); return $curlHelper->getContent(); } /** * Создать клиента с базовым URL * @param string $url * @return \GuzzleHttp\Client */ private function createClient(string $url) : Client { $this->config = $this->config() + ["base_uri" => $url]; return new Client($this->config); } /** * Конфигурация клиента * @return array */ private function config() : array { return [ 'force_ip_resolve' => 'v4', 'debug' => fopen("log/debug-http.log", "w"), 'allow_directs' => [ 'max' => 5, 'strict' => true, 'referer' => true, 'protocols' => ['http', 'https'], 'track_redirects' => true ], 'connect_timeout' => 300.0, 'verify' => false, 'headers' => [ 'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64) ' .'AppleWebKit/537.36 (KHTML, like Gecko) ' .'Chrome/124.0.0.0 YaBrowser/24.6.0.0 Safari/537.36', 'Content-Type' => 'text/html;charset=utf-8' ] ]; } }