← Todos los artículos

Puerto Proxy: segmentación y sesiones en el username

El puerto proxy de FourA lee la red, el país y las sesiones persistentes desde el username, y un error tipográfico devuelve un 400 indicando las claves válidas. Aquí tienes toda la gramática.

Novedades

Basta una sola letra que falte. Escribe -contry-de en el nombre de usuario del proxy y el error tipográfico quedará a la vista, luciendo exactamente como una opción válida.

El puerto proxy de FourA responde a eso con un error 400 que lista cada clave que reconoce. Ese es un pequeño detalle de un producto que salió de beta el 15 de septiembre: una URL de proxy en nuestras salidas para cualquier cliente que admita una (un navegador, una herramienta de descarga, el scraper que ya utilizas), sin necesidad de escribir una llamada a la API. Creas un usuario proxy en el Dashboard, pegas la cadena, y los túneles y el tráfico se descuentan de tu plan del mismo modo que las requests a la API.

Aquí tienes toda la gramática y el porqué de cada regla que incluye.

Cómo funciona

El puerto está en proxy.foura.ai:34004 y utiliza HTTP CONNECT con autenticación Basic, hacia destinos en los puertos 443 y 80. Las credenciales son usuarios proxy, separados intencionadamente de tu clave de API: el handshake del proxy viaja en texto plano, y un usuario proxy puede recibir una nueva contraseña sin que nadie tenga que modificar tu integración con la API.

Todo lo que sigue a la credencial es una lista de pares -key-value, en cualquier orden:

# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
  https://example.com

# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
  https://example.com

Shared son las salidas propias de FourA: la opción predeterminada e incluida en tu plan. Premium son direcciones residenciales, tomadas del tráfico premium de tu plan más el saldo que hayas comprado. En la red compartida, -fallback-premium permite que una conexión pase a una salida premium cuando la compartida no pueda procesarla. Está desactivado a menos que lo solicites y solo se activa mientras te quede cuota premium. Activarlo por defecto implicaría decidir, en tu nombre, gastar esa cuota.

Country se puede repetir, por lo que -country-de-country-fr es un alcance de dos países. Region, city, red por número AS, dispositivo (windows, android, ios, mac) y lifetime (de 3 a 1440 minutos) son solo para premium. Si solicitas una ciudad en la red compartida recibirás un 400 en lugar de un intento aproximado. La red compartida se selecciona por país y nada más específico, ya que un filtro de ciudad que casi nunca se puede cumplir es peor que no tener ningún filtro.

-session-<name> (de 1 a 32 letras, dígitos o guiones bajos) hace que las conexiones sean persistentes: cada conexión con ese nombre comparte una dirección. En shared, la dirección se mantiene en una ventana deslizante de diez minutos, por lo que dura mientras continúes usándola. En premium se mantiene durante el lifetime que configures o el valor predeterminado de la red. Si omites la sesión, cada conexión saldrá desde una nueva dirección.

Luego están los valores predeterminados guardados. La segmentación guardada en un usuario proxy dentro del Dashboard se aplica a cada conexión que realiza, por lo que la cadena puede reducirse solo a la credencial básica. El nombre de usuario sigue teniendo prioridad para su propia conexión, y any restablece un valor guardado: -city-any solicita a una clave que recuerda Múnich que aplique a toda Alemania. Los clientes que pueden añadir headers a un CONNECT (curl puede hacerlo con --proxy-header) pueden enviar las mismas opciones como X-Foura-Country, X-Foura-Session y las demás, y un header tiene prioridad sobre el nombre de usuario.

Impacto

La mayor parte de esto se traduce en preguntas que ya no necesitas hacerte.

¿Por qué fui rechazado? Cada rechazo tras validar tus credenciales incluye un header X-Foura-Error con el motivo en una sola línea. Un 400 indica la opción y los valores que acepta. Un 429 especifica qué límite de tu plan alcanzaste: túneles abiertos a la vez, aperturas de túnel por minuto o tráfico estándar para el periodo de facturación.

¿A quién pertenece la cuota? A la cuenta. Los túneles y las aperturas se contabilizan por cuenta y no por usuario proxy, por lo que una segunda credencial no otorga una segunda cuota. Los bytes cuentan para el ancho de banda de tu plan, y los bytes premium para tu cuota premium dentro de ese total, sin sumarse aparte. En un plan vendido por créditos, el puerto tiene sus propios gigabytes incluidos, que la página de Facturación recarga. No se contabiliza nada si no se abre ningún túnel.

¿Quién es el propietario de la credencial? Ahora puede pertenecer a una organización, de modo que el descargador de una empresa no se detiene el día que una persona se marcha. Los miembros la usan y leen su contraseña; los administradores y propietarios la rotan, desactivan o reconfiguran su segmentación; solo el propietario puede transferirla.

¿Qué hizo? Cambia el selector de Producto en Overview, Metrics o Activity a Proxy: túneles en las mismas clases de resultado que tus requests de API, cuántos están abiertos ahora mismo, tiempo de configuración y tráfico, desglosados por usuario de proxy, destino, país de salida o IP del cliente. Una sesión que ya tiene su dirección asignada suele conectarse en mucho menos de un segundo.

Pero el puerto es una tubería, y esa es la contrapartida. Tu cliente se comunica con el sitio a través del túnel, por lo que el unblocker, tus validate rules y la resolución de desafíos basada en navegador no están en esa ruta. También mide los bytes: una página de bloqueo que llega a través de un túnel abierto cuenta como bytes como cualquier otra, mientras que en la API un request que no tiene éxito no se factura. Pasa bytes a través del puerto; envía a la API las páginas que presentan bloqueos.

Para usuarios avanzados

Una vez consumida la cuota premium, las tres rutas hacia esa red reciben tres respuestas distintas, de forma intencionada. Una conexión que especifica -network-premium se rechaza con un 403 que lo indica explícitamente, ya que un cliente atendido silenciosamente desde otro lugar seguiría consultando y luego buscaría en la factura un cargo premium que nunca aparece. El fallback simplemente no se activa, y un valor predeterminado premium guardado en el usuario de proxy pasa a la red compartida, de modo que el túnel sigue abriéndose. Ninguno de ellos eligió gastar en esa conexión.

Tres combinaciones se rechazan por completo en lugar de cumplirse a medias: segmentación más precisa en la red compartida, -fallback-premium junto con -network-premium, y segmentación más precisa mientras un fallback está activo. El puerto solo admite CONNECT, por lo que un cliente que reenvía un request http:// estándar en lugar de tunelizarlo recibe un 405 (curl lo tuneliza con --proxytunnel). Además, un navegador controlado a través del puerto siempre debe incluir un nombre de sesión, ya que la carga de una sola página abre docenas de conexiones.

¿Varios workers, cada uno en su propia dirección? Asigna a cada uno su propio nombre de sesión:

import requests

TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"

def worker_session(name):
    proxy = TEMPLATE.format(name=name)
    s = requests.Session()
    s.proxies = {"http": proxy, "https": proxy}
    return s

workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)

El Dashboard hace lo mismo a escala: define Sticky, elige cuántas y la pestaña Connection string listará una línea por dirección, como URL o como host:port:user:pass para gestores de proxy. ¿Confundido por un rechazo? Añade -sv a la llamada curl y redirige 2>&1 | grep -i x-foura-error. Cada opción está en la referencia de puertos proxy, y la parte del Dashboard en Proxy Users.

Próximos pasos

El primer cliente que construimos sobre proxy users es el nuestro. La extensión de Chrome de FourA envía tu navegador a través de uno de ellos: elige la red y el país, activa el interruptor y una línea de estado mostrará la dirección que ven los sitios. Es una versión beta, no está en la Chrome Web Store y se instala desde Tools en el Dashboard en modo desarrollador. Más adelante, organization billing está en el roadmap público, lo cual es relevante aquí porque el proxy user de una organización factura a quien posea esa organización hoy en día.

Una URL de proxy es el contrato de integración más antiguo que existe, y cada herramienta que tienes ya lo habla. La parte que valía la pena resolver bien nunca fue el túnel. Es lo que la cadena que tiene delante puede significar, y lo que sucede cuando te equivocas.