Conectarse a un proxy residencial es una tarea de cinco minutos que a menudo se convierte en una tarde entera, normalmente porque la documentación de un proveedor asume convenciones de otro. Solo hay cuatro piezas móviles: un host, un puerto, un nombre de usuario y una contraseña. Lo que varía entre proveedores es cuánto significado se empaqueta en el nombre de usuario, y en una puerta de enlace como esta es ahí donde reside casi todo.
A continuación se explica el formato, qué hace cada pieza y cómo interpretar los errores cuando algo no funciona.
Las cuatro partes
| Parte | Valor |
|---|---|
| Host | p.shifter.io |
| Puerto | 443 |
| Usuario | customer-USERNAME más indicadores de segmentación opcionales |
| Contraseña | del panel |
El host y el puerto nunca cambian. Ni para un país distinto, ni para una sesión persistente, ni para usar SOCKS5 en lugar de HTTP. Cada solicitud va al mismo endpoint, y lo que se desea se expresa en el nombre de usuario. Esto es lo más importante que hay que entender, porque es lo que más difiere de los productos antiguos basados en puertos, donde cada configuración implicaba una dirección distinta.
Tanto HTTP(S) como SOCKS5 se comunican con el mismo host y puerto. Tus credenciales están en el panel, en Residential Proxies.
La solicitud más simple posible
Empieza por aquí y confirma que funciona antes de añadir nada más:
curl -x customer-USERNAME:PASSWORD@p.shifter.io:443 https://ipinfo.io/json
Eso devuelve un JSON que describe la dirección de salida que se te asignó. Ejecútalo dos veces y deberías ver dos direcciones distintas, porque la rotación es el comportamiento predeterminado. Si funciona, tus credenciales son correctas y todo lo demás es configuración.
Añadir segmentación al nombre de usuario
Los indicadores se añaden al nombre de usuario con guiones. El orden no importa, los valores van en minúsculas y los valores de varias palabras usan guiones bajos.
customer-USERNAME # rotación, sin geo
customer-USERNAME-country-de # salida alemana
customer-USERNAME-country-us-city-new_york # a nivel de ciudad
customer-USERNAME-country-us-asn-7922 # red específica
customer-USERNAME-sid-abc123 # sesión persistente
customer-USERNAME-sid-abc123-ttl-600 # persistente durante 10 minutos
customer-USERNAME-country-gb-sid-abc123-ttl-600 # combinado
Los códigos de país son ISO 3166-1 alpha-2, por lo que el Reino Unido es gb y no uk, que es el error tipográfico más habitual. sid es cualquier cadena que elijas y mantiene la misma dirección de salida para las solicitudes posteriores; ttl establece la duración en segundos y solo es válido junto con sid, con un valor predeterminado de 120. La referencia completa está en la documentación de geo-targeting y en la documentación de sesiones, y la diferencia conceptual está en sticky frente a rotating.
Un detalle útil adicional: por defecto, si nada coincide con un filtro muy estrecho en ese momento, la puerta de enlace recurre a un grupo más amplio para que tu solicitud se complete de todos modos. Añade strict-true cuando una coincidencia geográfica exacta importe más que el éxito de la solicitud, y recibirás un 502 en lugar de un fallback silencioso.
Los dos formatos que encontrarás
Las credenciales de proxy se escriben de dos formas, y convertir entre ambas suele causar confusión.
Formato URL, usado por la mayoría de las bibliotecas y por curl:
http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443
Formato separado por dos puntos, usado por muchas herramientas de escritorio y extensiones de navegador, que normalmente quieren las partes en campos separados:
p.shifter.io:443:customer-USERNAME-country-de:PASSWORD
Ambos contienen la misma información. Si una herramienta pide cuatro campos, usa el segundo formato; si pide una sola cadena, usa el primero.
En código
import requests
USER = "customer-USERNAME-country-de"
PROXY = f"http://{USER}:PASSWORD@p.shifter.io:443"
r = requests.get("https://ipinfo.io/json",
proxies={"http": PROXY, "https": PROXY}, timeout=20)
print(r.json())
Configura tanto la entrada http como la https. Configurar solo una es una causa habitual de “funciona para algunas solicitudes pero no para otras”, porque las solicitudes normales y las seguras siguen rutas distintas.
Si tu contraseña contiene caracteres con significado especial en una URL, como @, :, / o #, codifícala con porcentaje antes de incluirla, o la URL se interpretará mal y obtendrás un error de autenticación con credenciales completamente correctas.
Para SOCKS5, mantén el mismo host, puerto y credenciales, y cambia solo el esquema. Usa la variante que resuelve los nombres de host en el proxy en lugar de localmente, ya que la otra filtra tu DNS y puede devolver resultados regionalmente incorrectos, algo que se trata en cómo prevenir fugas de DNS.
Encontrarás configuraciones funcionales para otras pilas tecnológicas en la documentación de integraciones y, específicamente para Python, en cómo usar proxies residenciales con Python.
Interpretar los errores
Cuatro respuestas cubren casi todos los problemas de configuración, y cada una apunta a algo distinto.
407 Proxy Authentication Required significa que la puerta de enlace rechazó tus credenciales. O bien son incorrectas, o algún indicador en tu nombre de usuario está mal formado, porque un valor no reconocido hace que todo el nombre de usuario sea imposible de analizar. Elimina todos los indicadores y prueba primero el nombre de usuario simple: si funciona, el fallo está en los indicadores, y puedes volver a añadirlos uno a uno para encontrarlo. La ruta completa de diagnóstico está en solucionar errores 407 y de credenciales.
502 Bad Gateway significa que tus credenciales eran correctas pero nada coincidió con tu filtro en ese momento. Ampliarlo, pasar de ciudad a país, o eliminar strict-true.
509 Bandwidth Limit Exceeded significa que la asignación del plan se ha agotado con el exceso desactivado. No hay ningún problema con la conexión.
Conexión rechazada o tiempo de espera agotado significa que nunca llegaste a la puerta de enlace. Comprueba que estás apuntando a p.shifter.io:443 y no a un host antiguo basado en puertos, y prueba la conectividad básica con nc -vz p.shifter.io 443 antes de asumir que se trata de un problema del proxy.
Verificar que realmente funciona
Hay dos comprobaciones que merece la pena hacer una vez al principio.
Confirmar la rotación: envía la misma solicitud varias veces sin sid y confirma que la dirección cambia. Si no lo hace, la causa habitual es que tu cliente HTTP reutiliza una conexión, en lugar de que el proxy no rote, algo que se trata en la IP no rota.
Confirmar la geografía: solicita un país y comprueba que la dirección devuelta se geolocaliza allí, y de forma más significativa, que un destino sensible a la geografía se comporta como si estuvieras allí. El método más completo está en comprobar la velocidad, la tasa de éxito y la precisión de la ubicación.
En resumen
Un host, un puerto, todo lo demás en el nombre de usuario. Primero consigue que funcione una solicitud simple, luego añade los indicadores de segmentación uno a uno, y recuerda que los códigos de país son ISO, así que el Reino Unido es gb. Configura tanto la entrada de proxy HTTP como la HTTPS, codifica con porcentaje una contraseña con caracteres especiales, y usa la variante de SOCKS5 que resuelve de forma remota si optas por ese camino. Cuando algo falla, el código de estado te indica dónde mirar: 407 son las credenciales o un indicador mal formado, 502 es un filtro sin nada detrás, 509 es el ancho de banda, y la conexión rechazada significa que ni siquiera estás hablando con la puerta de enlace.
Esa puerta de enlace es la puerta principal a los proxies residenciales, donde el país, la ciudad, el ASN y la sesión son todos parámetros de la misma conexión, facturados por GB de forma que nada de tu configuración cambia lo que pagas. Si todo esto es nuevo para ti, empieza con proxies residenciales para principiantes.