Pas de KYC — aucune pièce d’identité, aucun selfie, aucun document
Langue: Français
Choisir 1 GB

Proxies résidentiels africains avec Python

Une demande de contrôle autorisée pour l'un des 24 marchés africains documentés, avec des identifiants de connexion saisis de manière privée et sans boucle de réessai automatique.

Dernière mise à jour: · 7 min de lecture

Réponse rapide

Comment utiliser des proxies résidentiels africains dans Python ?

Utilisez des proxies résidentiels africains en Python en transmettant les identifiants de connexion spécifiques au pays générés à Requests pour un point de terminaison HTTPS autorisé. Au 15 octobre 2026, le trafic AfricaProxies commence à 0,50 $US/GB, sans KYC et avec un financement en crypto. L'exemple valide le TLS, définit les délais de connexion/lecture et s'arrête en cas de refus, de redirections ou d'erreurs avant qu'un test borné ne devienne une collecte répétée.

Ce qu’il faut savoir sur la configuration Python

Passerellegw.africaproxies.com
port HTTP(S)7777
Prise en charge du protocoleHTTP, HTTPS (CONNECT) et SOCKS5
Codes pays prioritairesNG Nigeria ; ZA Afrique du Sud ; KE Kenya ; GH Ghana ; TZ Tanzanie ; CI Côte d’Ivoire ; SN Sénégal ; CM Cameroun
Délais d'attente de connexion / lecture10 / 30 secondes dans cet exemple ; non les limites de temps total écoulé
Plafond de sessionLes sessions avec la même IP conservent cette IP pendant la durée choisie (ttl, en minutes), jusqu’à 30 minutes. L’IP peut changer plus tôt, par exemple si l’appareil résidentiel se déconnecte.
TarifÀ partir de 0,50 $US/GB
traficLe trafic comptabilisé comprend toutes les données envoyées et reçues par le proxy, en-têtes inclus. 1 GB = 1,000,000,000 octets. Les tentatives de connexion qui échouent avant d’atteindre le site ciblé ne sont pas comptées.

Comment envoyer une première requête via un proxy africain en Python ?

  1. Préparer un point de terminaison contrôlé

    Installez Requests dans votre environnement de projet. Choisissez un point de terminaison HTTPS de petite taille que vous possédez ou êtes autorisé à tester, et générez le nom d'utilisateur proxy complet pour le pays africain requis.

  2. Configurer l'échantillon en privé

    Renseignez les identifiants de proxy générés dans la configuration documentée. Gardez la vérification TLS active, encodez les identifiants dans l’URL du proxy et définissez des délais d’attente distincts pour la connexion et la lecture.

  3. Valider la réponse

    Exécutez l'échantillon limité ci-dessous. Inspectez l'adresse d'arrivée dans votre journal de point de terminaison et vérifiez cette même adresse dans des sources de localisation indépendantes ; arrêtez-vous en cas de contenu inattendu, de refus ou de limites de débit.

Que dois-je préparer avant d'exécuter l'exemple ?

Préparez un forfait de proxies résidentiels acheté et un nom d'utilisateur proxy complet généré pour le pays requis. Choisissez un petit point de terminaison HTTPS que vous possédez ou êtes autorisé à tester. Installez Requests dans l'environnement Python de votre projet avec python -m pip install requests.

Gardez le test initial séparé d'une collecte sur une place de marché. Pour une application nigériane, kenyane, ghanéenne ou sud-africaine que vous possédez, utilisez un petit point de terminaison de santé ou QA et inspectez son journal de serveur pour confirmer la sortie arrivante. L'exemple ne collecte pas de données de place de marché, ne passe pas de commandes et ne charge pas de publicités payantes en direct.

Python : une petite demande de contrôle HTTPS autorisée
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.")

Pourquoi les proxies, les certificats et les délais d'attente sont-ils explicites ?

Les paramètres de proxy explicites par requête empêchent les paramètres de proxy ambiants de sélectionner une route différente ; trust_env = False désactive également les paramètres dérivés de l'environnement. quote(..., safe='') encode les composants des identifiants de connexion avant qu'ils n'entrent dans le proxy URL. Le code n'affiche jamais cet URL.

La vérification TLS reste activée. Dans un environnement géré nécessitant un ensemble de certificats personnalisé, configurez le bon ensemble de confiance au lieu de désactiver la vérification. La paire de délais limite l'établissement de la connexion et l'attente de lecture ; il ne s'agit pas d'une échéance totale d'exécution. Ces choix suivent la documentation avancée de Requests et la référence API.

Comment vérifier que l’IP de sortie correspond au pays demandé ?

Utilisez l’adresse source observée par votre propre point de test, puis vérifiez cette même adresse dans deux jeux de données de géolocalisation de sources distinctes, par exemple IPinfo et DB-IP. Respectez les règles d’accès de chaque fournisseur et consignez le pays renvoyé, le nom de la base ou du service et l’heure. Deux interfaces reposant sur les mêmes données ne constituent pas des preuves indépendantes.

Si vous appelez deux services qui détectent chacun l’IP de l’appelant, des connexions à rotation peuvent leur présenter des sorties différentes. Comparez la même adresse observée ou utilisez une session persistante documentée. Un désaccord doit suspendre toute comparaison dépendant de la localisation ; aucun résultat ne prouve une adresse physique.

Comment gérer les sessions et les erreurs dans un test d’application en Afrique ?

Une comparaison par pays doit préserver ses paramètres de marché et l'état des cookies séparément pour chaque marché. Les sessions de requêtes peuvent réutiliser les connexions, de sorte que plusieurs requêtes de page n'impliquent pas plusieurs sorties différentes. Mode rotation : chaque nouvelle connexion obtient une IP du pool, généralement différente. Pour obtenir une nouvelle IP à chaque requête, envoyez une requête par connexion et désactivez le keep-alive. Le mode persistant conserve une IP pendant la durée de session définie. Le glossaire explique la différence entre la session du proxy et les cookies d'application.

Une réponse 200 doit toujours contenir le résultat attendu ; un défi d'accès peut apparaître avec un statut de succès. S'arrêter sur un contenu inattendu, des refus ou des limites de débit. L'exemple ne possède aucune configuration de tentative automatique et examine les redirections avant de les suivre. Lorsque la route de contrôle fonctionne mais que la cible ne fonctionne pas, préservez cette distinction dans un rapport d'assistance.

Questions sur la configuration Python

Puis-je utiliser une seule session Python pour plusieurs pays ?

Une session peut conserver les cookies et réutiliser les connexions. Utilisez des exécutions documentées distinctes pour le Nigeria, l'Afrique du Sud, le Kenya et le Ghana afin que les paramètres du pays et l'état de l'application ne se mélangent pas. Une connexion réutilisée peut conserver sa sortie ; n'interprétez pas chaque appel .get() comme une rotation garantie.

Pourquoi le mot de passe est-il encodé en URL ?

L’URL du proxy contient les identifiants de connexion. Des caractères comme @, : ou / peuvent modifier son interprétation si rien n’est prévu. L’exemple encode le nom d’utilisateur et le mot de passe et n’affiche jamais l’URL complète. Saisissez les secrets dans les invites privées au lieu de les enregistrer dans le code source.

Pourquoi ne pas désactiver la vérification TLS pour un test échoué ?

La vérification du certificat protège la connexion cible HTTPS. Maintenez-la activée et diagnostiquez la chaîne de certificats ou le faisceau de confiance requis. La désactiver masquerait la cause et modifierait la sécurité du test plutôt que de confirmer que la route africaine est configurée correctement.

Les deux délais d’attente limitent-ils l’exécution totale à 40 secondes ?

Non. L'exemple donne des limites d'attente distinctes pour la connexion et la lecture. Il demande de documenter que ces valeurs ne sont pas des délais globaux réels. La réponse est également limitée à un corps restreint pour ce test de contrôle ; les travaux de projet plus importants nécessitent leur propre budget explicite et périmètre autorisé.

Dois-je réessayer via une autre IP de sortie après une erreur 403 ou 429 ?

Non. L'échantillon s'arrête pour que le refus ou la limite de débit puisse être examiné. Vérifiez la méthode d'accès autorisée de la cible et votre charge de travail autorisée. Un pays différent ou IP ne constitue pas une autorisation de poursuivre la collecte après un refus. Conservez la réponse pour l'examen d'accès du projet.

Comment vérifier l’indépendance des preuves de couverture d’un pays ?

Commencez par une adresse de sortie observée et comparez son pays dans deux ensembles de données distincts. Enregistrez les noms des sources et le temps de recherche. L'appel à deux points de terminaison de détection avec IP tournantes peut observer des adresses différentes, cette procédure ne validerait donc pas la même sortie. Mettez en pause un test sensible à la ville si les preuves divergent.

Références de configuration principales vérifiées le 14 octobre 2026 (5)
  1. Requests advanced usage: proxies, sessions, TLS and timeouts — Requests (2026-10-14)
  2. Requests developer interface — Requests (2026-10-14)
  3. Python urllib.parse: URL component quoting — Python Software Foundation (2026-10-14)
  4. IPinfo developer resource — IPinfo (2026-10-14)
  5. DB-IP geolocation API — DB-IP (2026-10-14)

1 GB 1,23 $US · Recharge du compte à partir de 25 $US

Choisir 1 GB