# Proxies residenciales africanos en Python

> Configura proxies residenciales africanos en Python con Requests: desde 0,50 US$/GB, sin KYC, con cripto, pruebas TLS y tiempos de espera explícitos.

- URL: https://africaproxies.com/es/guides/python/
- Última actualización: 2026-10-15
- Editor: AfricaProxies (https://africaproxies.com)

Una solicitud de control autorizada para cualquiera de los 24 mercados africanos documentados, con credenciales de acceso ingresadas de forma privada y sin bucle de reintento automático.

**Respuesta rápida — ¿Cómo usar proxies residenciales africanos en Python?**

Utilice proxies residenciales africanos en Python pasando las credenciales generadas específicas por país a Requests para un endpoint HTTPS autorizado. A partir del 15 de octubre de 2026, el tráfico de AfricaProxies comienza en 0,50 US$/GB, sin KYC y con financiación en criptomonedas. El ejemplo valida TLS, establece tiempos de espera de conexión/lectura y se detiene ante rechazos, redirecciones o errores antes de que una prueba delimitada se convierta en una recopilación repetida.

## Datos de configuración de Python

| Atributo | Valor |
| --- | --- |
| Gateway | gw.africaproxies.com |
| puerto HTTP(S) | 7777 |
| Soporte de protocolo | HTTP, HTTPS (CONNECT) y SOCKS5 |
| Códigos de país prioritarios | NG Nigeria; ZA Sudáfrica; KE Kenia; GH Ghana; TZ Tanzania; CI Costa de Marfil; SN Senegal; CM Camerún |
| Timeouts de conexión / lectura | 10 / 30 segundos en este ejemplo; no son límites de tiempo total transcurrido |
| Límite de sesión | Las sesiones con la misma IP la conservan durante el tiempo que establezcas (ttl, en minutos), hasta 30 minutos. La IP puede cambiar antes, por ejemplo si el dispositivo residencial se desconecta. |
| Tasa | Desde 0,50 US$/GB |
| tráfico | El uso cuenta todos los datos enviados y recibidos a través del proxy (subida y descarga, incluidas las cabeceras). 1 GB = 1,000,000,000 bytes. No se contabilizan los intentos de conexión que fallan antes de llegar al destino. |

## ¿Cómo hacer la primera petición con un proxy africano en Python?

1. **Prepara un endpoint controlado** — Instala Requests en tu entorno de proyecto. Elige un pequeño punto de conexión HTTPS que poseas o tengas permiso para probar, y genera el nombre de usuario completo del proxy para el país africano requerido.
2. **Configurar la muestra de forma privada** — Proporcione las credenciales de acceso del proxy generado a través de la configuración documentada. Mantenga habilitada la verificación TLS, codifique las credenciales para el proxy URL y utilice tiempos de espera explícitos de conexión y lectura.
3. **Validar la respuesta** — Ejecute la muestra limitada a continuación. Inspeccione la dirección de llegada en su registro de endpoint y verifique esa misma dirección en fuentes de ubicación independientes; deténgase ante contenido inesperado, rechazos o límites de tasa.

## ¿Qué debo preparar antes de ejecutar el ejemplo?

Prepare un plan de proxies residenciales comprado y un nombre de usuario de proxy completo generado para el país requerido. Elija un pequeño punto de conexión HTTPS que posea o esté autorizado para probar. Instale Requests en el entorno Python de su proyecto con `python -m pip install requests`.

Mantenga la prueba inicial separada de una colección de mercado. Para una aplicación de Nigeria, Kenia, Ghana o Sudáfrica que posea, use un pequeño punto de conexión de salud o QA e inspeccione su registro del servidor para confirmar la salida entrante. El ejemplo no recopila datos de mercado, realiza pedidos ni carga anuncios pagados en vivo.

*Python: una pequeña solicitud de control autorizada HTTPS*

```python
from getpass import getpass
from urllib.parse import quote, urlsplit
import requests

country = input("Country to test (ng, za, ke, gh, tz, ci, sn, cm, et, ug, rw, zm, zw, mz, ao, bw, na, bj, tg, bf, ml, mg, mu, cd): ").strip().lower()
if country not in {"ng", "za", "ke", "gh", "tz", "ci", "sn", "cm", "et", "ug", "rw", "zm", "zw", "mz", "ao", "bw", "na", "bj", "tg", "bf", "ml", "mg", "mu", "cd"}:
    raise SystemExit("Choose one country for this example.")

target = input("HTTPS endpoint you own or may test: ").strip()
parts = urlsplit(target)
if parts.scheme != "https" or not parts.hostname or parts.username or parts.password:
    raise SystemExit("Use an authorised HTTPS URL without embedded credentials.")

# Generate this full country-specific username in the client area.
user = getpass("Full generated proxy username: ")
password = getpass("Proxy password: ")
if f"-country-{country}" not in user:
    raise SystemExit("Generate a username for the selected country first.")

proxy = (
    f"http://{quote(user, safe='')}:{quote(password, safe='')}@"
    "gw.africaproxies.com:7777"
)
proxies = {"http": proxy, "https": proxy}

try:
    with requests.Session() as session:
        session.trust_env = False
        with session.get(
            target, proxies=proxies, timeout=(10, 30), verify=True,
            allow_redirects=False, stream=True,
        ) as response:
            if response.status_code in {403, 407, 429}:
                raise SystemExit(f"Stop and diagnose HTTP {response.status_code}; no retry.")
            if 300 <= response.status_code < 400:
                raise SystemExit("Stop: review the redirect destination before requesting it.")
            response.raise_for_status()
            received = 0
            for chunk in response.iter_content(chunk_size=8192):
                received += len(chunk)
                if received > 131072:
                    raise SystemExit("Stop: use a smaller control response.")
            print({"requested_country": country, "status": response.status_code,
                   "body_bytes_read": received})
except requests.exceptions.RequestException as error:
    # Exception messages can expose URLs: print the class, not credentials or URLs.
    raise SystemExit(f"Connection failed: {type(error).__name__}; diagnose before retrying.")

```

## ¿Por qué definir explícitamente proxies, certificados y tiempos de espera?

La configuración explícita del proxy por solicitud evita que la configuración del proxy del entorno seleccione una ruta diferente; `trust_env = False` también desactiva la configuración derivada del entorno. `quote(..., safe='')` codifica los componentes de las credenciales de acceso antes de que entren en el proxy URL. El código nunca imprime esa URL.

La verificación TLS permanece habilitada. En un entorno gestionado que necesite un paquete de certificados personalizado, configure el paquete de confianza correcto en lugar de desactivar la verificación. El par de tiempo de espera limita el establecimiento de la conexión y la espera de lectura; no es un plazo total de tiempo de ejecución. Estas elecciones siguen la [documentación avanzada de Requests](https://requests.readthedocs.io/en/latest/user/advanced/) y la referencia [API](https://requests.readthedocs.io/en/latest/api/).

## ¿Cómo comprobar que la salida pertenece al país solicitado?

Utiliza la dirección de origen observada por tu propio punto de prueba y consulta esa misma dirección en dos conjuntos de datos de geolocalización con fuentes distintas, por ejemplo [IPinfo](https://ipinfo.io/developers) y [DB-IP](https://db-ip.com/api/). Respeta las normas de acceso de cada proveedor y registra el país obtenido, el nombre de la base de datos o del servicio y la hora. Dos interfaces que utilizan el mismo conjunto de datos subyacente no constituyen pruebas independientes.

Si, en cambio, llamas a dos puntos de prueba que detectan cada uno la IP de quien hace la solicitud, las conexiones rotativas pueden darles salidas diferentes. Compara la misma dirección observada o utiliza una sesión documentada que mantenga la dirección. Una discrepancia debe detener una comparación que dependa de la ubicación; ninguno de los resultados demuestra una dirección física.

## ¿Cómo usar sesiones y errores al probar una app africana?

Una comparación por país debe preservar la configuración de mercado y el estado de las cookies por separado para cada mercado. Las sesiones de solicitudes pueden reutilizar conexiones, por lo que varias solicitudes de página no implican varias salidas diferentes. Modo de rotación: cada conexión nueva recibe una IP del conjunto, normalmente distinta. Para obtener una IP nueva en cada petición, envía una petición por conexión (desactiva keep-alive). El modo de sesión fija mantiene una IP durante el tiempo de sesión definido. El [glosario](/es/glossary/) explica la diferencia entre la sesión del proxy y las cookies de la aplicación.

Una respuesta 200 aún debe contener el resultado esperado; puede aparecer un desafío de acceso con un estado de éxito. Deténgase ante contenido inesperado, rechazos o límites de tasa. El ejemplo no tiene configuración de reintento automático y revisa las redirecciones antes de seguirlas. Cuando la ruta de control funciona pero el objetivo no, preserve esa distinción en un informe de soporte.

## Preguntas de configuración de Python

### ¿Puedo usar una sesión Python para varios países?

Una sesión puede retener cookies y reutilizar conexiones. Utiliza ejecuciones documentadas separadas para Nigeria, Sudáfrica, Kenia y Ghana para que la configuración del país y el estado de la aplicación no se mezclen. Una conexión reutilizada puede mantener su salida; no interpretes cada llamada a `.get()` como una rotación garantizada.

### ¿Por qué se aplica codificación de URL a la contraseña?

El proxy URL contiene componentes de credenciales de acceso. Otros caracteres como `@`, `:` o `/` pueden alterar la forma en que se analiza. La muestra codifica tanto el usuario como la contraseña y nunca imprime la URL completa. Introduce los secretos en los campos privados en lugar de incluirlos en el código fuente.

### ¿Por qué no desactivar la verificación TLS cuando falla una prueba?

La verificación de certificados protege la conexión del objetivo HTTPS. Manténla activada y diagnostica la cadena de certificados o el paquete de confianza requerido. Desactivarla ocultaría la causa y cambiaría la seguridad de la prueba en lugar de confirmar que la ruta africana está configurada correctamente.

### ¿El par de tiempos de espera limita toda la tarea a 40 segundos?

No. El ejemplo proporciona límites de espera de conexión y lectura por separado. Solicita que se documente que esos valores no son plazos totales de reloj. La respuesta también está limitada a un cuerpo pequeño para esta prueba de control; el trabajo de proyectos más grandes necesita su propio presupuesto explícito y alcance permitido.

### ¿Debo reintentar una respuesta 403 o 429 con otra salida?

No. La muestra se detiene para que se pueda revisar el rechazo o el límite de velocidad. Verifica el método de acceso permitido del objetivo y tu carga de trabajo autorizada. Un país diferente o una IP no es permiso para continuar con la recopilación tras el rechazo. Preserva la respuesta para la revisión de acceso del proyecto.

### ¿Cómo confirmar que las evidencias de un país son independientes?

Comience con una dirección de salida observada y compare su país en dos conjuntos de datos distintos. Registre los nombres de origen y el tiempo de búsqueda. Llamar a dos puntos finales de detección rotativos puede observar direcciones diferentes, por lo que ese procedimiento no validaría la misma salida. Pause una prueba sensible a la ciudad si la evidencia no coincide.

## Fuentes primarias de configuración consultadas el 14 de octubre de 2026

1. [Requests advanced usage: proxies, sessions, TLS and timeouts](https://requests.readthedocs.io/en/latest/user/advanced/) — Requests (2026-10-14)
2. [Requests developer interface](https://requests.readthedocs.io/en/latest/api/) — Requests (2026-10-14)
3. [Python urllib.parse: URL component quoting](https://docs.python.org/3/library/urllib.parse.html) — Python Software Foundation (2026-10-14)
4. [IPinfo developer resource](https://ipinfo.io/developers) — IPinfo (2026-10-14)
5. [DB-IP geolocation API](https://db-ip.com/api/) — DB-IP (2026-10-14)

---

AfricaProxies: AfricaProxies es un proveedor de proxies residenciales para África subsahariana, con pago en cripto y sin subir documentos de identidad.
