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 utilices. 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: streams, descargas grandes y sesiones completas de navegador.
Beta. El puerto del proxy está en fase beta. El tráfico a través de él aún no se factura, no está cubierto por monitorización ni por un compromiso de disponibilidad, y los nombres de las opciones aún pueden cambiar. Avísanos si algo falla.
Conexión
| Parámetro | Valor |
|---|---|
| Host | proxy.foura.ai |
| Port | 34004 |
| Protocol | HTTP CONNECT con autenticación Basic |
| Target ports | 443 y 80 |
Las credenciales se obtienen en el panel de control. Crea un usuario de proxy en Proxy, en la barra lateral, para obtener un nombre de usuario y una contraseña generados. Están separados de tu clave de API a propósito: el handshake del proxy viaja en texto plano en cada conexión, y un usuario de proxy se puede rotar sin modificar tu integración con 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 tunelizan un destino https://. Un destino http:// simple funciona cuando tu cliente también lo tuneliza (curl: --proxytunnel); un cliente que en su lugar reenvía la request simple 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-residential-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 se rechaza. Una clave desconocida también se rechaza y nunca se descarta: escribir mal -contry-de devuelve un error 400 que lista 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), residential |
La red de la que proviene la dirección. Shared son las salidas propias de FourA, incluidas en tu plan. Residential son direcciones residenciales, tomadas del tráfico premium que incluye tu plan más el que hayas comprado. |
fallback |
residential, off |
Solo red compartida (shared). Usa una salida residencial cuando la red compartida no pueda procesar la request. Desactivado a menos que se solicite, y solo se activa cuando tu plan incluye tráfico premium y saldo disponible. |
country |
ISO 3166-1 alpha-2, repetible | El país de salida que ve el destino. Repítelo para un alcance multipaís: -country-de-country-fr. |
session |
1 a 32 letras, dígitos o guiones bajos | Las conexiones que comparten nombre comparten dirección (sticky). Omítelo para obtener una nueva dirección por conexión (rotating). |
state |
una palabra | Región. Solo residencial. |
city |
una palabra | Ciudad. Solo residencial. |
asn |
un número | Red, por número de AS. Solo residencial. |
os |
windows, android, ios, mac |
El tipo de dispositivo al que pertenece la dirección. Solo residencial. |
lifetime |
3 a 1440 |
Minutos que se retiene una dirección residencial sticky. Solo residencial. |
Todas las opciones excepto network, fallback y session aceptan any, que borra el valor guardado en el usuario proxy para esta conexión específica.
Se rechazan tres combinaciones con un 400 en lugar de aplicarse parcialmente:
state,city,asn,osolifetimeen la red compartida. La red compartida se selecciona solo por país y ningún criterio más específico; añade-network-residentialpara segmentar por ciudad.-fallback-residentialjunto con-network-residential. Un fallback no tiene ninguna función en la red a la que recurre.- Segmentación detallada con un fallback activo. Un fallback puede activarse o no, por lo que se rechaza una ciudad que solo podría respetarse a veces.
Sesiones
En la red compartida, una sesión con nombre mantiene la misma salida mientras la sigas usando, 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 residencial, una sesión con nombre mantiene su dirección durante lifetime minutos, o el valor predeterminado de la red cuando no configuras ninguno.
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. Cualquier valor que pongas en el nombre de usuario prevalece para esa conexión específica, y any restablece un valor guardado. Un valor residencial predeterminado guardado solo consume saldo cuando tu plan lo permite; de lo contrario, la conexión se sirve desde la red compartida.
Encabezados CONNECT
Un cliente que pueda agregar encabezados a la solicitud CONNECT puede enviar las mismas opciones como encabezados. Un encabezado prevalece sobre la misma opción en el nombre de usuario.
| Encabezado | Equivalente a |
|---|---|
X-Foura-Network |
-network- |
X-Foura-Fallback |
-fallback- (residential 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 incluye un header X-Foura-Error con un motivo de 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 o el destino no es un host público de internet. |
| 405 Method Not Allowed | Una request simple 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. |
| 429 Too Many Requests | El usuario de proxy ya tiene 200 túneles abiertos, o el puerto alcanzó su capacidad o tasa de apertura. |
| 502 Bad Gateway | No se encontró una salida operativa para ese destino dentro del tiempo límite de selección, o el propio resolver de FourA no pudo resolver el host. Ambos son mensajes diferentes en X-Foura-Error. |
| 503 Service Unavailable | El puerto del proxy está desactivado. |
Límites
- Hasta 200 túneles abiertos a la vez por usuario de proxy.
- Encontrar una salida toma hasta 45 segundos antes de que el puerto falle con un error 502. Una sesión que ya tiene una salida generalmente se conecta en mucho menos de un segundo.
- Un túnel sin bytes en ninguna dirección se cierra tras dos minutos de inactividad.
- Un usuario de proxy que desactives o elimines en el panel de control deja de autenticarse en menos de un minuto.
Medición
Los bytes que pasan por el puerto cuentan para el ancho de banda en tu página de Uso y límites, y los bytes a través de una salida residencial también cuentan para tu tráfico premium. Una conexión que especifica -network-residential una vez agotada la cuota premium se atiende de todos modos; en ese estado no se aplica un fallback ni un valor residencial predeterminado guardado, y la red compartida atiende la conexión en su lugar.
Relacionado
- Usuarios de proxy: Crea usuarios de proxy y genera una cadena de conexión en el panel de control
- Proxy Request: La alternativa de API JSON, con reintentos y validación integrados
- Reutilizar un proxy entre requests: Mantener una misma salida en la API JSON
- Uso y límites: Ancho de banda y tráfico premium según tu plan