Abres una página a través de una salida en Alemania y ves inglés. Un compañero abre la misma dirección y obtiene la tienda de EE. UU. Ambos usasteis el proxy correcto, entonces ¿qué ha pasado? Los sitios web rara vez deciden tu país a partir de una sola señal. Combinan varias, y el orden es distinto en cada sitio. Si trabajas en localization QA o monitorizas páginas locales, conocer estas señales ahorra mucha confusión.
Esta guía cubre las cuatro señales que usan los sitios, un ejemplo probado de cómo las combinan sitios reales, y cómo comprobar un sitio que te interese.
Las cuatro señales
| Señal | Qué suele decidir | Cómo la controlas |
|---|---|---|
| Dirección IP | El país, y a veces el idioma | El país de salida de tu proxy |
| Cabecera Accept-Language | El idioma dentro de un país | La configuración de tu navegador o cliente |
| La URL | Lo que sea que nombre, por encima del resto | La dirección que solicitas |
| Una cookie o elección guardada | Lo que elegiste la última vez | Borrar cookies, o una sesión nueva |
Algunos sitios no usan ninguna de estas en el servidor, y muestran una página que te deja elegir en su lugar.
Qué hacen los sitios reales
Cargamos algunas páginas conocidas a través de salidas de residential proxy en distintos países, con distintos idiomas de navegador, el 6 de noviembre de 2026, y confirmamos cada país de salida por separado. El script es corto y solo necesita requests. Las credenciales provienen de variables de entorno.
from __future__ import annotations
import os
import re
import requests
GATEWAY = "p.shifter.io:443"
USER, PASSWORD = os.environ["PROXY_USER"], os.environ["PROXY_PASS"]
BROWSER = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/130.0 Safari/537.36")
def visit(url, country, language):
"""Load a URL from an exit in one country with one browser language."""
proxy = f"http://{USER}-country-{country}:{PASSWORD}@{GATEWAY}"
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
s.headers.update({"User-Agent": BROWSER, "Accept-Language": language})
r = s.get(url, timeout=40)
lang = re.search(r'<html[^>]*\blang=["\']?([\w-]+)', r.text, re.I)
return r.url, lang.group(1) if lang else None
CASES = [
# url, exit country, Accept-Language
("https://www.netflix.com/", "us", "en-US"),
("https://www.netflix.com/", "de", "en-US"),
("https://www.netflix.com/", "de", "de-DE"),
("https://www.netflix.com/", "br", "en-US"),
("https://www.google.com/", "us", "en-US"),
("https://www.google.com/", "de", "en-US"),
("https://www.google.com/?hl=en", "de", "en-US"),
("https://www.apple.com/de/", "us", "en-US"),
("https://www.ikea.com/", "de", "de-DE"),
]
if __name__ == "__main__":
for url, country, language in CASES:
for attempt in range(3):
try:
final, lang = visit(url, country, language)
break
except requests.RequestException:
final, lang = "error", None
asked = url.replace("https://www.", "")
got = final.replace("https://www.", "")
print(f"{asked:22} exit {country.upper()} {language:6} -> {got:22} lang={lang}")
Salida, mostrando la dirección solicitada, la salida y el idioma del navegador, la página alcanzada y el idioma de esa página:
netflix.com/ exit US en-US -> netflix.com/ lang=en
netflix.com/ exit DE en-US -> netflix.com/de-en/ lang=en
netflix.com/ exit DE de-DE -> netflix.com/de/ lang=de
netflix.com/ exit BR en-US -> netflix.com/br-en/ lang=en
google.com/ exit US en-US -> google.com/ lang=en
google.com/ exit DE en-US -> google.com/ lang=de
google.com/?hl=en exit DE en-US -> google.com/?hl=en lang=en-DE
apple.com/de/ exit US en-US -> apple.com/de/ lang=de-DE
ikea.com/ exit DE de-DE -> ikea.com/ lang=en
Cuatro sitios, cuatro comportamientos.
Netflix usa tanto la IP como el idioma. La salida eligió la ruta del país y el idioma del navegador eligió la variante: una salida alemana con un navegador en inglés obtuvo /de-en/, y con un navegador en alemán obtuvo /de/. Una salida brasileña con un navegador en inglés obtuvo /br-en/.
Google mantiene una única URL y sigue la IP para el idioma. Una salida alemana obtuvo una página en alemán incluso con un navegador en inglés. Añadir ?hl=en a la URL la cambió a inglés, así que la URL prevaleció sobre la IP.
Apple deja que la URL decida. Una salida en EE. UU. que solicitaba /de/ obtuvo el sitio alemán. La IP no la redirigió a ningún sitio.
IKEA no redirigió en absoluto. Una salida alemana con un navegador en alemán siguió obteniendo la página internacional en inglés, lo que deja la elección al visitante.
Qué significa esto para tus comprobaciones
- Configura la salida y el idioma juntos. Probar un mercado alemán con un navegador en inglés puede darte una combinación que ningún visitante real ve, como muestra la fila de Netflix. Ajusta también la zona horaria, ya que algunos sitios la comprueban.
- Registra la URL final. La dirección que solicitaste y la página a la que llegaste suelen ser distintas. Guarda ambas, para que una redirección no pase desapercibida.
- Empieza cada mercado desde cero. Una cookie de una visita anterior puede prevalecer sobre la IP. Usa una sesión nueva para cada país.
- No confíes solo en la URL. En sitios como Google, la misma URL sirve contenido distinto según la IP. En sitios como Apple, la URL decide y la IP no importa. Comprueba qué tipo de sitio tienes.
- Elige la salida según el visitante que quieras ser. Nuestro artículo sobre choosing an exit country cubre cuándo importa la ubicación y cuándo no.
Si gestionas el sitio
Las redirecciones geográficas pueden jugar en tu contra. La recomendación de Google es evitar redirigir automáticamente a los usuarios de una versión de idioma a otra basándose en lo que crees que es su idioma, porque puede impedir que las personas y los motores de búsqueda lleguen a todas las versiones. También señala que Googlebot suele rastrear desde direcciones IP de EE. UU. y no envía cabecera Accept-Language, por lo que un sitio que adapta el contenido según la ubicación puede no lograr que se indexen todas las versiones.
El patrón más seguro es el que siguen, en alguna forma, la mayoría de los sitios anteriores: URLs separadas por país o idioma, una sugerencia basada en las señales del visitante, y una forma sencilla de cambiar.
La conclusión
La idea que tiene un sitio web de dónde estás es una mezcla de IP, idioma del navegador, URL y memoria, combinada de forma distinta en cada sitio. Cuando una página muestra el país equivocado, comprueba las cuatro señales antes de culpar al proxy, y cuando hagas pruebas, cambia una señal cada vez para saber cuál sigue el sitio.
Fuentes y referencias
- Google Search Central, Managing multi-regional and multilingual sites: developers.google.com
- Google Search Central, How Google crawls locale-adaptive pages: developers.google.com