À la fin de ce guide d’intégration du proxy AIOHTTP, vous aurez appris ce qui suit :
- En quoi consiste AIOHTTP.
- Pourquoi utiliser un proxy.
- Comment configurer un proxy HTTP, HTTPS ou SOCKS dans AIOHTTP.
- Comment gérer l’authentification par proxy, les erreurs de certificat SSL, la rotation des adresses IP, etc.
En quoi consiste AIOHTTP ?
AIOHTTP est un framework populaire client/serveur HTTP asynchrone en open source codé en Python. Ses principales caractéristiques sont les suivantes :
- Prise en charge du protocole HTTP côté client et côté serveur.
- Prise en charge des sockets Web clients et serveurs.
- Fourniture d’un serveur Web doté d’un intergiciel et d’un routage enfichable.
Ce qui importe dans ce didacticiel, c’est sa capacité à agir en tant que client HTTP pour effectuer des requêtes HTTP en plus d’asyncio. AIOHTTP est particulièrement adapté à la création de scripts qui doivent gérer efficacement plusieurs requêtes simultanées.
Au moment d’écrire ces lignes, AIOHTTP compte plus de 14 000 étoiles sur GitHub.
Pourquoi avez-vous besoin d’un proxy AIOHTTP ?
Une bonne raison d’utiliser un proxy dans AIOHTTP est la protection de votre identité en ligne. En acheminant votre demande vers un serveur proxy, vous pouvez masquer votre adresse IP et votre localisation, afin de faire croire au site de destination que votre demande provient du serveur proxy et non de vous. Cela signifie qu’il sera plus difficile de vous identifier et de vous suivre, ce qui renforcera la confidentialité de vos opérations en ligne tout en évitant les interdictions d’adresses IP et les restrictions géographiques.
Notez que vous pouvez obtenir le même résultat avec des requêtes
, comme indiqué dans notre tutoriel d’intégration de proxys de
requêtes.
Configuration d’un proxy dans le Proxy AIOHTTP
Dans cette section étape par étape, vous allez apprendre à configurer un proxy HTTP, HTTPS ou SOCKS dans AIOHTTP.
Prérequis pour AIOHTTP
Dans notre démonstration, nous supposerons que Python est déjà installé sur votre machine et qu’un projet Python avec un environnement virtuel est déjà en place. Installez AIOHTTP et ses dépendances recommandées à l’aide de la commande suivante :
pip install aiohttp[speedups]
Cela ajoutera aiohttp
aux dépendances de votre projet.
Ouvrez votre fichier de script Python et ajoutez l’importation d’aiohttp
:
import aiohttp
Pour que aiohttp fonctionne avec la syntaxe async/await
, vous devez utiliser asyncio
. Importez donc également cette bibliothèque et configurez une fonction de base async main()
:
import aiohttp
import aiohttp
import asyncio
async def main():
# aiohttp logic...
asyncio.run(main())
Parfait ! Vous êtes prêt(e) à écrire la logique d’intégration du proxy AIOHTTP !
Prérequis pour le proxy
Avant de voir comment intégrer un proxy dans AIOHTTP, vous devez comprendre à quoi ressemble l’URL d’un proxy.
Il s’agit du format de l’URL requis pour se connecter à un serveur proxy en AIOHTTP :
<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]
En détail, cela se compose ainsi :
<PROTOCOL>
:http
pour les proxys HTTP,https
pour les proxys HTTPS, etsocks
,socks4
, orsocks5
pour les proxys dans les différents protocoles SOCKS.<HOST>
: adresse IP du serveur proxy ou de l’ensemble de son domaine (par exempleproxydomain.com
).<PORT>
: : port écouté par le serveur proxy.
: nom d’utilisateur facultatif pour authentifier la connexion proxy.
: mot de passe facultatif pour authentifier la connexion proxy.
Notez que <PROTOCOL>
et <HOST>
sont les seules parties obligatoires de l’URL. La section <PORT>
est facultative, mais vous devez généralement la spécifier. Enfin, la section des informations d’identification <USERNAME>:<PASSWORD>
n’est nécessaire que lorsqu’il s’agit de proxys authentifiés.
Si vous n’avez pas l’URL d’un serveur proxy, vous pouvez en obtenir un en ligne gratuitement. Dans le même temps, gardez à l’esprit que les proxys gratuits ne sont pas fiables, gourmands en données, incohérents, sujets aux erreurs et douteux. Vous ne pouvez les utiliser qu’à des fins d’apprentissage. Dans un environnement de production, vous aurez besoin d’un proxy premium fiable provenant d’un fournisseur de premier ordre tel que Bright Data.
Plus loin dans cet article, vous découvrirez comment obtenir un proxy Bright Data et l’utiliser dans AIOHTTP.
Intégration d’un proxy HTTP
Comme indiqué dans la documentation, AIOHTTP prend en charge l’intégration de proxys HTTP. Supposons qu’il s’agit de l’URL de votre proxy HTTP :
http://190.6.23.219:999
Vous pouvez le spécifier dans votre requête AIOHTTP en utilisant l’option de proxy ci-dessous :
async with aiohttp.ClientSession() as session:
async with session.get(
'https://example.com',
proxy='http://190.6.23.219:999'
) as response:
print(response.status)
AIOHTTP va désormais acheminer la requête GET via l’URL du proxy transmise en tant qu’argument proxy
à la fonction get()
.
N’oubliez pas que vous pouvez utiliser un proxy HTTP pour le trafic HTTP et HTTPS.
Intégration d’un proxy HTTPS
En ce qui concerne les proxys HTTPS, les choses deviennent un peu plus complexes. Comme indiqué dans la documentation AIOHTTP :
« Dans Python 3.10, la prise en charge de TLS dans TLS est désactivée pour les transports qu’
asyncio utilise
. Si la nouvelle version de Python (disons la v3.11) active un attribut, cela fonctionnera simplement.aiohttp v3.8 et ses versions ultérieures sont prêts pour cela et ont un code en place qui prend en charge TLS-in-TLS, ce qui permet d’envoyer des requêtes HTTPS via des tunnels proxy HTTPS. »
En d’autres termes, si vous souhaitez utiliser des proxys HTTPS dans AIOHTTP, vous devez mettre à jour Python vers la version 3.11 et aiohttp
vers la version 3.8 ou supérieure. L’approche de l’intégration du proxy HTTPS AIOHTTP reste la même que celle décrite ci-dessus. Le seul aspect qui change est que le protocole proxy sera https
et non plus http
.
Intégration d’un proxy SOCKS
AIOHTTP ne prend pas en charge les proxys SOCKS prêts à l’emploi. Si vous devez utiliser un proxy SOCKS dans AIOHTTP, vous devez installer aiohtpp-socks
:
pip install aiohttp_socks
Cette bibliothèque utilise python-socks
pour étendre AIOHTTP avec la prise en charge de SOCKS4(a) et SOCKS5(h).
Considérez ceci comme l’URL de votre proxy SOCKS :
socks5://98.175.31.195:4145
Utilisez-la dans AIOHTTP comme suit :
# initialize a SOCKS proxy connector
connector = ProxyConnector.from_url('socks5://98.175.31.195:4145')
# initialize an AIOHTTP client with the SOCKS proxy connector
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get('https://example.com') as response:
print(response.status)
AIOHTTP acheminera désormais la requête GET via le proxy SOCKS spécifié.
ProxyConnector
provient de aiohttp-socks
, alors n’oubliez pas de procéder à l’importation avec :
from aiohttp_socks import ProxyConnector
Dans les coulisses, aiohttp-socks
définit un connecteur AIOHTTP pour modifier les requêtes et les faire passer par le proxy SOCKS donné.
Exemple complet
Vous venez d’apprendre à utiliser un proxy avec AIOHTTP. Vérifions que les approches ci-dessus fonctionnent dans un exemple complet !
Par souci de simplicité, nous allons travailler avec un proxy HTTP, mais vous pouvez facilement adapter l’exemple ci-dessous à HTTPS et SOCKS.
L’URL cible de la requête GET sera l’endpoint /ip
du projet HTTPBin. Cette API renvoie l’adresse IP de la requête entrante. Ainsi, si l’intégration du proxy est réussie, l’endpoint doit répondre avec l’adresse IP du serveur proxy et non la vôtre.
Encore une fois, supposons qu’il s’agit de l’URL de votre serveur proxy HTTP :
http://190.6.23.219:999
Intégrez-la à AIOHTTP et imprimez les données renvoyées par l’endpoint https://httpbin.io/ip avec :
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
# perform a GET request through an HTTP proxy
async with session.get(
'https://httpbin.io/ip',
proxy='http://190.6.23.219:999'
) as response:
# extract the response data and print it
json = await response.json()
print(json)
asyncio.run(main())
Exécutez ce script et vous devriez obtenir :
{
'origin': '190.6.23.219'
}
Et voilà ! Il s’agit exactement de l’adresse IP du serveur proxy, ce qui signifie que l’intégration du proxy AIOHTTP fonctionne à merveille.
Remarque : la durée de vie des serveurs proxy est courte. Au moment où vous lirez ce tutorial, le proxy sélectionné ne fonctionnera plus et le script ci-dessus échouera. Pour le faire fonctionner, remplacez le proxy HTTP par un proxy neuf et fonctionnel.
Proxy AIOHTPP : cas d’utilisation avancés
Vous connaissez les bases de l’intégration d’un proxy AIOTTP, mais qu’en est-il des techniques plus complexes ? Vous en apprendrez plus dans cette section !
Proxys globaux via des variables d’environnement
AIOHTTP permet de déterminer le proxy à utiliser de deux manières :
- Il utilise l’URL du proxy transmise à l’argument proxy.
- Si
trust_env
est défini surTrue
, il lit les variables d’environnementHTTP_PROXY
etHTTPS_PROXY
.
Vous pouvez donc configurer un proxy globalement dans AIOHTTP en définissant les paramètres ci-dessous :
HTTP_PROXY
: URL du serveur proxy à utiliser pour les requêtes HTTP.HTTPS_PROXY
: URL du serveur proxy à utiliser pour les requêtes HTTPS.
Par exemple, configurez-les sous Linux ou macOS à l’aide des commandes suivantes :
export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]"
export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]"
Ensuite, transmettez trust_env=True
à aiohttp.ClientSession()
:
async with aiohttp.ClientSession(trust_env=True) as session:
Vous pouvez désormais appeler session.get()
sans argument proxy
async with aiohttp.ClientSession(trust_env=True) as session:
async with session.get('https://example.com') as response:
print(response.status)
Formidable ! AIOHTTP utilisera les proxys spécifiés dans les variables d’environnement pour chaque requête HTTP et HTTPS.
Suivez le lien pour en savoir plus, car le même mécanisme fonctionne également avec des proxys dans cURL.
Approches d’authentification par proxy
Toute tentative de connexion à un proxy authentifié sans les informations d’authentification appropriées entraînera une erreur 407 Authentification par proxy requise
.
Supposons que la chaîne ci-dessous soit l’URL permettant de se connecter à un proxy HTTP authentifié :
http://admin:[email protected]:8928
Ici, l’URL du proxy est la suivante :
http://20.198.112.312:892
Tandis que les informations d’authentification sont les suivantes :
- Nom d’utilisateur :
admin
- Mot de passe :
pK5ip98NWp56l9sjy
AIOHTTP permet de gérer les proxys authentifiés de deux manières :
- Spécifiez les informations d’authentification directement dans l’URL du proxy :
async with session.get(
'https://example.com/',
proxy='http://admin:[email protected]:8928'
) as response:
2. Transmettez le nom d’utilisateur et le mot de passe à un objet aiohttp.BasicAuth()
, puis utilisez-le dans l’option proxy_auth
:
proxy_auth = aiohttp.BasicAuth('admin', 'pK5ip98NWp56l9sjy')
async with session.get(
'https://example.com/',
proxy="http://20.198.112.312:892",
proxy_auth=proxy_auth
) as response:
Génial ! L’authentification par proxy AIOHTTP n’est plus un secret pour vous.
Éviter les erreurs de certificat SSL
Lorsque vous configurez un proxy dans AIOHTTP, vos requêtes peuvent échouer en raison de l’erreur suivante :
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain
Pour éviter ces problèmes de certificat SSL, désactivez la vérification SSL avec SSL=False
:
async with aiohttp.ClientSession() as session:
async with session.get(
'https://example.com',
proxy='http://190.6.23.219:999',
ssl=False # turn of SSL certificate verification
) as response:
print(response.status)
Les erreurs de vérification du certificat SSL AIOHTTP disparaîtront immédiatement.
Rotation des proxys dans AIOHTTP
Si vous utilisez le même serveur proxy à plusieurs reprises, il est possible que le site cible bloque son adresse IP. Pour éviter cela, vous devez vous assurer que votre requête utilise différents serveurs proxy.
Voici comment procéder :
- Remplissez une liste Python avec de nombreuses URL de proxys.
- Choisissez au hasard une URL de proxy avant chaque requête.
- Définissez l’URL du proxy choisi dans AIOHTTP.
Le principal problème de cette approche est qu’elle implique un code générique et réutilisable. En outre, cela nécessite l’accès à un pool de serveurs proxy fiables, ce qui n’est pas gratuit. Heureusement, Bright Data propose une solution plus efficace ! Ses proxys rotatifs modifient automatiquement les adresses IP de sortie pour vous, sont disponibles dans 195 pays, offrent une disponibilité réseau exceptionnelle et garantissent un taux de réussite de 99,9 %
Dans le chapitre suivant, vous apprendrez comment commencer à utiliser des proxys rotatifs de Bright Data dans AIOHTTP.
Intégrer AIOHTTP à un proxy Bright Data
Bright Data contrôle les meilleurs serveurs proxys au monde, et assiste des entreprises du classement Fortune 500 et plus de 20 000 clients. Son réseau mondial de proxys comprend :
- Proxys de datacenters — Plus de 770 000 adresses IP de datacenters.
- Proxys résidentiels — plus de 72 millions d’adresses IP résidentielles dans plus de 195 pays.
- Proxys de FAI — plus de 700 000 adresses IP de FAI.
- Proxys mobiles — Plus de 7 millions d’adresses IP mobiles.
Il s’agit de l’un des réseaux proxy les plus importants et les plus fiables au monde !
Suivez les étapes ci-dessous pour apprendre à utiliser les proxys de Bright Data dans AIOHTTP.
Si vous avez déjà un compte, connectez-vous à Bright Data. Sinon, créez un compte gratuitement. Vous aurez accès au tableau de bord utilisateur suivant :
Cliquez sur le bouton « View proxy products » (Afficher les produits proxy) comme indiqué ci-dessous :
Vous allez être redirigé vers la page « Proxies & Scraping Infrastructure » (Proxys et infrastructure de scraping) suivante :
Faites défiler la page vers le bas, trouvez la carte « Residential Proxies » (Proxys résidentiels), puis cliquez sur le bouton « Get started » (Commencer) :
Vous accéderez au tableau de bord de configuration des proxys résidentiels. Suivez l’assistant guidé et configurez le service proxy en fonction de vos besoins. Si vous avez des doutes quant à la configuration du proxy, n’hésitez pas à contacter le support disponible 24 h/24 et 7 j/7.
Accédez à l’onglet « Access parameters » (Paramètres d’accès) et récupérez l’hôte, le port, le nom d’utilisateur et le mot de passe de votre proxy comme suit :
Notez que le champ « Host » (Hôte) inclut déjà le port.
C’est tout ce dont vous avez besoin pour créer l’URL du proxy et l’utiliser dans AIOHTTP. Rassemblez toutes les informations et créez une URL avec la syntaxe suivante :
<Username>:<Password>@<Host>
Par exemple, dans ce cas, ce serait :
brd-customer-hl_4hgu8dwd-zone-residential:[email protected]:XXXXX
Basculez sur « Active proxy » (Proxy actif), suivez les dernières instructions et tout sera prêt !
Votre snippet de proxy AIOHTTP pour l’intégration de Bright Data ressemblera à ce qui suit :
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
# perform a GET request through an HTTP proxy
async with session.get(
'https://lumtest.com/myip.json',
proxy='http://brd-customer-hl_4hgu8dwd-zone-residential:[email protected]:XXXXX'
) as response:
# extract the response data and print it
json = await response.json()
print(json)
asyncio.run(main())
Conclusion
Dans ce tutoriel d’intégration de proxys AIOHTTP, vous avez appris pourquoi vous devez utiliser des proxys et comment le faire avec aiohttp
. Vous savez maintenant comment configurer un proxy HTTP, HTTPS ou SOCKS dans AIOHTTP, une bibliothèque cliente HTTP Python populaire. Comme montré, cela ne demande que quelques lignes de code !
Grâce à ce guide, vous avez également compris pourquoi vous ne devriez jamais utiliser de services proxy gratuits. Vous devriez plutôt adopter des serveurs proxy fiables provenant d’un fournisseur de services proxy réputé. Le meilleur fournisseur du marché ? Bright Data ! La procédure d’intégration des proxys dans AIOHTTP reste la même, mais les avantages des proxys premium sont infinis.
Aucune carte de crédit requise