El primer instinto al configurar un proxy es elegir la ubicación más cercana a ti. Parece que debería ser lo más rápido, y a menudo te da los datos equivocados. Un sitio web no sabe dónde estás sentado. Ve la salida, así que con un proxy residencial el país de salida decide qué versión del sitio obtienes.
Esta guía muestra cómo elegir un país de salida según lo que intentas averiguar, cómo comprobar si un sitio reacciona o no, y cuándo la salida más cercana es realmente la decisión correcta.
La pregunta que hay que hacerse primero
No preguntes dónde estás. Pregunta la perspectiva de quién necesitas.
| Lo que estás haciendo | Elige una salida en |
|---|---|
| Monitorizar precios de la competencia | El mercado en el que compran tus clientes |
| Comprobar posiciones de búsqueda | El lugar donde está quien busca, hasta la ciudad si hace falta |
| Verificar anuncios | El país al que se dirige la campaña |
| Probar un sitio localizado | Cada mercado en el que vendes, uno por uno |
| Comprobar tus propias redirecciones geográficas | Cada país que cubre la regla, más uno que no |
| Recopilar contenido que no varía | Cerca del objetivo, con un pool amplio |
Un equipo en Alemania que rastrea precios de EE. UU. no obtiene nada útil desde una salida alemana: vería euros y quizá un catálogo diferente, y los datos parecerían perfectamente correctos.
Comprueba si el sitio reacciona
No todos los sitios cambian según la IP. Antes de planificar en torno a un país de salida, mídelo. El script siguiente solicita una página desde varios países, confirma por dónde salió realmente cada petición y registra lo que mostró la página. Se ejecuta en Python 3.9 y posteriores con requests. Las credenciales provienen de variables de entorno, así que mantenlas fuera de tu código.
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"]
def session_for(country):
proxy = f"http://{USER}-country-{country}:{PASSWORD}@{GATEWAY}"
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
s.headers["User-Agent"] = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/130.0 Safari/537.36")
return s
def signals(url, country):
"""What this page shows a visitor from one country, and where they really exited."""
s = session_for(country)
try:
exit_country = s.get("https://ip-info.com/json", timeout=30).json().get("country")
r = s.get(url, timeout=30)
except (requests.RequestException, ValueError) as exc:
return {"exit": country.upper(), "error": type(exc).__name__}
lang = re.search(r'<html[^>]*\blang=["\']?([\w-]+)', r.text, re.I)
currency = re.search(r'priceCurrency["\']?\s*(?:content=|:)\s*["\']([A-Z]{3})', r.text)
price = re.search(r'itemprop=["\']price["\']\s+content=["\']([\d.,]+)', r.text)
return {"exit": exit_country, "status": r.status_code, "final_url": r.url,
"lang": lang.group(1) if lang else None,
"currency": currency.group(1) if currency else None,
"price": price.group(1) if price else None}
if __name__ == "__main__":
for url in ("https://www.apple.com/shop/buy-iphone",
"https://store.steampowered.com/app/620/Portal_2/"):
print(url)
for country in ("us", "de", "gb", "br"):
s = signals(url, country)
print(f" exit {s['exit']} {s.get('status')} lang={s.get('lang')} "
f"{s.get('currency')} {s.get('price') or ''}".rstrip())
Lo ejecutamos el 4 de noviembre de 2026 con una cuenta de prueba de Shifter. Estos son los resultados, y los precios cambiarán con el tiempo:
https://www.apple.com/shop/buy-iphone
exit US 200 lang=en-US USD
exit DE 200 lang=en-US USD
exit GB 200 lang=en-US USD
exit BR 200 lang=en-US USD
https://store.steampowered.com/app/620/Portal_2/
exit US 200 lang=en USD 9.99
exit DE 200 lang=en EUR 9,69
exit GB 200 lang=en GBP 8.19
exit BR 200 lang=en BRL 33,99
Esos dos sitios muestran los dos casos que necesitas conocer.
Apple no reacciona a la IP. Todas las salidas obtuvieron la misma página de EE. UU. en USD. Apple mantiene su localización en la URL: /de/shop/buy-iphone sirve la tienda alemana. Tu país de salida no supuso ninguna diferencia en esta página, así que elegir uno por geografía no lograría nada.
Steam sí reacciona. La URL y el idioma se mantuvieron iguales, pero la moneda y el precio cambiaron con la salida: USD 9.99, EUR 9,69, GBP 8.19 y BRL 33,99. Una comprobación de precios desde el país equivocado te da un número limpio, creíble y erróneo, sin ningún error que te avise.
Comprueba la salida además de la página, tal como hace el script. Una ubicación equivocada es mucho más fácil de detectar aquí que más adelante en tus datos.
Cuándo la salida más cercana es la equivocada
- Tu audiencia está en otro lugar. Este es el caso más común, y los ejemplos anteriores muestran por qué.
- Tu vecino es un mercado diferente. Alemania y Austria comparten idioma pero no siempre precios, y compartir moneda no significa compartir catálogo. Trátalos como mercados separados.
- El mercado es regional. Algunos resultados varían tanto por ciudad o estado como por país. Nuestra guía sobre cuándo importa la segmentación a nivel de ciudad explica cómo saberlo.
- El resto de la petición no concuerda. Una salida en EE. UU. con un idioma de navegador alemán puede darte una mezcla extraña de ambos. La ubicación geográfica, la zona horaria y el idioma deben coincidir, así que configúralos juntos.
Cuándo lo más cercano es correcto, y cercano a qué
Si un sitio sirve el mismo contenido en todas partes, como ocurre con la URL de Apple, la geografía deja de ser una cuestión de precisión y pasa a serlo de rendimiento. Aun así, la distancia que cuenta rara vez es la que va desde tu escritorio. Una petición mediante proxy va de tu cliente a la puerta de enlace, luego a la salida y luego al objetivo. Una salida cercana al objetivo acorta el último tramo, por lejos que estés tú.
Así que si el contenido no varía, elige una salida cerca del objetivo con muchas IP disponibles, y mídela. Los países más pequeños tienen pools más reducidos, así que un mercado vecino popular puede ser más fiable cuando la ubicación realmente no importa.
Errores habituales
- Probar un solo país y dar por hecho el resto. Un sitio que ignora la IP en una página puede reaccionar en otra, como el pago o la búsqueda. Prueba la página que te interesa.
- Fiarte de una respuesta limpia. Una página en la moneda equivocada sigue devolviendo 200. Añade una comprobación de la moneda o el idioma que esperas.
- Asumir que cada paso sigue la salida. Algunos sitios se guían por DNS o por la configuración de la cuenta además de por la IP, y el DNS puede no resolverse en el país de salida. Si importa, verifica la página que obtienes.
- Confundir salida y residencia. La salida es el punto por donde una petición abandona la red. No dice nada sobre dónde se almacenan tus datos.
- Tratar una salida como un permiso. Mostrarle a un sitio la vista de otro país con fines de prueba o investigación es una cosa. Usarlo para eludir licencias, sanciones o los términos de un sitio es otra. Consúltalo primero con tu equipo legal.
En resumen
Elige la salida según la perspectiva de quién necesitas, no según dónde estás. Comprueba si el sitio reacciona a la IP, confirma por dónde salió realmente cada petición y añade una comprobación de la moneda o el idioma que esperas. Solo cuando el contenido es el mismo en todas partes entra en juego la distancia, y entonces lo que cuenta es la distancia hasta el objetivo.