Puerto del proxy
Envía tu propio tráfico a través de las salidas de FourA desde cualquier cliente que acepte una URL de proxy: un navegador, una herramienta de descarga o un scraper que ya tengas en ejecución. El puerto del proxy abre un túnel hacia el destino que indiques y copia bytes en ambas direcciones, por lo que admite lo que la API JSON no puede: streams, descargas grandes y sesiones completas de navegador.
Conexión
| Configuración | Valor |
|---|---|
| Host | proxy.foura.ai |
| Port | 34004 |
| Protocol | HTTP CONNECT con Basic authentication |
| Target ports | 443 y 80 |
Las credenciales se obtienen desde el dashboard. Crea un usuario de proxy en Proxy dentro de la barra lateral para recibir un nombre de usuario y una contraseña generados. Están separados de tu API key a propósito: el handshake del proxy viaja en texto claro en cada conexión, y un usuario de proxy se puede rotar sin modificar tu integración de la API. Consulta Proxy Users.
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 https://example.com
import requests
proxy = "http://USERNAME:PASSWORD@proxy.foura.ai:34004"
r = requests.get("https://example.com", proxies={"https": proxy, "http": proxy})
print(r.status_code)
El puerto solo admite CONNECT. Todos los clientes canalizan un destino https:// mediante un túnel. Un destino http:// sin cifrar funciona cuando tu cliente también lo canaliza mediante un túnel (curl: --proxytunnel); un cliente que reenvía la request sin cifrar directamente al proxy recibe 405 Method Not Allowed.
Las opciones van en el nombre de usuario
Todo lo que va después de la credencial es una lista de pares -key-value, en cualquier orden:
USERNAME-network-premium-country-de-session-a1
Los valores son palabras en minúsculas. Un guion dentro de un valor inicia una nueva opción, por lo que -city-new-york se interpreta como dos opciones y es rechazado. Las claves desconocidas también se rechazan y nunca se descartan: si escribes mal -contry-de, recibirás un error 400 que enumera las claves admitidas, en lugar de enrutar la petición desde el país equivocado.
| Opción | Valores | Qué hace |
|---|---|---|
network |
shared (predeterminado, alias pool), premium (alias residential) |
De qué red procede la dirección. Shared son las salidas propias de FourA, incluidas en tu plan. Premium son direcciones residenciales, tomadas del tráfico premium incluido en tu plan más el que hayas comprado. |
fallback |
premium (alias residential), off |
Solo para la red shared. Utiliza una salida premium cuando la red shared no pueda procesar la request. Desactivado a menos que se solicite, y solo se activa si tu plan incluye tráfico premium y te queda saldo disponible. |
country |
ISO 3166-1 alpha-2, repetible | El país de salida que ve el destino. Repítelo para un alcance de varios países: -country-de-country-fr. |
session |
De 1 a 32 letras, dígitos o guiones bajos | Las conexiones que comparten un nombre comparten una dirección (sticky). Omítelo para obtener una nueva dirección por conexión (rotativa). |
state |
una palabra | Región. Solo premium. |
city |
una palabra | Ciudad. Solo premium. |
asn |
un número | Red, por número AS. Solo premium. |
os |
windows, android, ios, mac |
El tipo de dispositivo al que pertenece la dirección. Solo premium. |
lifetime |
3 a 1440 |
Minutos durante los cuales se mantiene una dirección premium sticky. Solo premium. |
Todas las opciones excepto network, fallback y session aceptan any, que borra el valor guardado en el usuario proxy solo para esta conexión.
Se rechazan tres combinaciones con un código 400 en lugar de aplicarse parcialmente:
state,city,asn,osolifetimeen la red shared. La red shared solo se puede filtrar por país; añade-network-premiumpara segmentar por ciudad.-fallback-premiumjunto con-network-premium. Un fallback no tiene sentido en la red hacia la cual se hace el fallback.- Segmentación detallada con un fallback activado. Un fallback puede activarse o no, por lo que se rechaza una ciudad que solo podría respetarse a veces.
Sesiones
En la red shared, una sesión con nombre mantiene la misma salida mientras continúes usándola, en una ventana deslizante de diez minutos. Si esa salida deja de funcionar, la sesión pasa a otra en lugar de fallar. Un navegador controlado a través del puerto siempre debe llevar un nombre de sesión: la carga de una página abre docenas de conexiones y, sin una sesión, cada una saldrá desde una dirección diferente.
En la red premium, una sesión con nombre retiene su dirección durante lifetime minutos, o el valor predeterminado de la red si no defines uno.
Valores predeterminados guardados
La segmentación guardada en un usuario proxy en el panel se aplica a cada conexión realizada con él, por lo que el nombre de usuario puede mantenerse corto. Todo lo que incluyas en el nombre de usuario tiene prioridad para esa conexión puntual, y any restablece un valor guardado. Un valor predeterminado premium guardado solo consume cuando tu plan lo permite; de lo contrario, la conexión se atiende desde la red compartida y el túnel se abre igualmente.
Encabezados CONNECT
Un cliente que pueda agregar encabezados a la solicitud CONNECT puede enviar las mismas opciones como encabezados. Un encabezado tiene prioridad sobre la misma opción en el nombre de usuario.
| Encabezado | Equivalente a |
|---|---|
X-Foura-Network |
-network- |
X-Foura-Fallback |
-fallback- (premium o off) |
X-Foura-Country |
-country-, separados por comas para varios |
X-Foura-Session |
-session- |
X-Foura-State |
-state- |
X-Foura-City |
-city- |
X-Foura-Asn |
-asn- |
X-Foura-Lifetime |
-lifetime- |
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 \
--proxy-header "X-Foura-Country: de" \
https://example.com
Respuestas
Un túnel que se abre responde 200 Connection established. Cada rechazo generado tras verificar tus credenciales incluye un header X-Foura-Error con el motivo en una sola línea, así que lee ese header antes que cualquier otra cosa.
| Status | Cuándo |
|---|---|
| 400 Bad Request | Una request malformada o una opción que FourA no puede procesar. X-Foura-Error detalla la opción y los valores admitidos. |
| 403 Forbidden | El puerto de destino no está disponible, el destino no es un host público de internet, el puerto no está incluido en tu plan, o indicaste -network-premium y tu plan no tiene tráfico premium restante o no incluye la red premium. |
| 405 Method Not Allowed | Una request común en lugar de CONNECT. |
| 407 Proxy Authentication Required | Credenciales ausentes o incorrectas. La respuesta nunca especifica qué parte fue la errónea. |
| 408 Request Timeout | El cliente se conectó y no envió nada durante 15 segundos. |
| 431 Request Header Fields Too Large | Los headers de la request CONNECT superaron los 16 KB. |
| 429 Too Many Requests | Uno de los límites de tu plan: túneles abiertos simultáneamente, aperturas de túnel por minuto o el tráfico estándar de este ciclo de facturación. También ocurre cuando el propio puerto alcanza su capacidad máxima o su tasa de apertura. X-Foura-Error indica cuál de ellos es. |
| 502 Bad Gateway | No se encontró una salida funcional para ese destino dentro del tiempo límite de selección, o el resolver interno de FourA no pudo resolver el host. Ambos casos generan mensajes distintos en X-Foura-Error. |
| 503 Service Unavailable | El puerto del proxy está desactivado. |
Límites
- Los túneles abiertos simultáneamente y las aperturas de túnel por minuto dependen de tu plan, y se contabilizan por cuenta y no por usuario de proxy: generar una segunda credencial no otorga una cuota adicional. Puedes ver tus valores en Usage & Limits.
- La búsqueda de una salida tarda hasta 45 segundos antes de que el puerto aborte con un error 502. Una sesión que ya cuenta con una salida asignada suele conectarse en mucho menos de un segundo.
- Un túnel sin transferencia de bytes en ninguna dirección se cierra tras dos minutos de inactividad.
- Cuando el puerto se actualiza, los túneles que ya están abiertos disponen de casi tres minutos para finalizar antes de cerrarse, mientras que las nuevas conexiones continúan abriéndose con normalidad. Una descarga o transmisión prolongada debe reconectarse si su túnel se cierra.
- Un usuario de proxy que desactives o elimines en el panel de control dejará de autenticarse en el lapso de un minuto.
Medición
Los bytes transmitidos a través del puerto se descuentan del ancho de banda en tu página de Usage & Limits, y los bytes a través de una salida premium también se descuentan de tu tráfico premium: son los mismos bytes, reportados dos veces, nunca sumados entre sí. Cuando se abre un túnel, el tráfico generado por las salidas premium que el puerto intentó usar pero descartó también se contabiliza como tráfico premium. Los intentos no utilizados en la red compartida no se contabilizan, y no se computa nada si no se llega a abrir ningún túnel.
El tráfico estándar que el puerto puede usar es el de tu plan. En un plan por créditos, el puerto tiene sus propios gigabytes incluidos y la página Billing vende más; en un plan por tráfico, consume del mismo fondo común que la API. Cuando se agota, se rechazan las nuevas conexiones hasta que se reinicie el período o agregues más, y los correos de uso indican cuándo.
Una vez consumida la cuota premium, las tres formas de acceder a esa red responden de manera diferente, a propósito. Una conexión que especifica -network-premium se rechaza con un 403 que lo indica, ya que un cliente que solicitó consumir créditos y recibió servicio silenciosamente desde otro lugar seguiría solicitándolo e intentando conciliar una línea premium que nunca aparece. No se aplica un fallback, y una configuración premium predeterminada guardada en el proxy user se degrada a la red compartida, lo que aún abre el túnel: ninguna de esas opciones eligió consumir créditos en esta conexión.
Relacionado
- Proxy Users: Crea proxy users y genera una cadena de conexión en el dashboard
- Proxy Request: La alternativa con JSON API, con reintentos y validación integrados
- Reuse a Proxy Across Requests: Mantén una misma salida en la JSON API
- Usage & Limits: Ancho de banda y tráfico premium según tu plan