Tout comme pour les web scrapers, vous pouvez créer, gérer et utiliser un rotateur de proxys par vous-même. Pour cela, vous aurez besoin de connaissances en programmation (Python est idéal car il dispose de nombreux frameworks utiles et d’une communauté active), de quelques connaissances générales en informatique, d’une liste de proxys et de beaucoup de patience.
La forme la plus basique serait un script qui reçoit une variable contenant votre liste de proxys et attribue des adresses IP aléatoires à chaque requête. Par exemple, vous pourriez utiliser la fonction random.sample() pour choisir une adresse IP de manière totalement aléatoire à chaque fois, mais cela signifie que le même proxy pourrait être utilisé plusieurs fois de suite. Dans ce cas, vous pourriez faire en sorte qu'une fois qu'une adresse IP a été utilisée, elle soit retirée de la liste de proxys, afin qu'elle ne soit plus utilisée tant que toutes les autres adresses n'ont pas été utilisées elles aussi.
Voici un petit exemple en Python :
import random
import requests
proxy_pool = ["191.5.0.79:53281", "202.166.202.29:58794", "51.210.106.217:443", "5103.240.161.109:6666"]
URL = 'https://httpbin.org/get'
while len(proxy_pool) >0:
random_proxy_list = random.sample(proxy_pool, k=1)
random_proxy = {
'http': 'http://' + random_proxy_list[0],
}
response = requests.get(URL, proxies=random_proxy)
print(response.json())
proxy_pool.remove(random_proxy_list[0])
Le code ne parcourt le pool de proxys qu'une seule fois et ne le fait que pour une seule URL, mais cela devrait bien illustrer la logique. J'ai d'ailleurs récupéré les adresses IP sur https://free-proxy-list.net/. Sans surprise, elles n'ont pas fonctionné.
C'est en fait le problème lorsque l'on crée son propre rotateur. Vous aurez toujours besoin de bonnes adresses IP dédiées ou, au moins, partagées. Une fois que vous en êtes à acheter des proxys, autant chercher une solution qui gère la rotation des adresses IP pour vous. De cette façon, vous ne perdez pas de temps à le créer ni d'argent à l'externaliser. De plus, vous bénéficiez d'autres avantages tels que :
- Une option rapide pour faire tourner uniquement les adresses IP d'une région spécifique ;
- La possibilité de choisir les types de proxys à faire tourner (datacenter ou résidentiels ; fixes ou mobiles ; etc.)
- La configuration d'adresses IP statiques lorsque vous effectuez du scraping derrière un écran de connexion ;
- Des tentatives automatiques avec de nouvelles adresses IP en cas d'échec d'une requête.
Prenons WebScrapingAPI comme exemple pour montrer à quel point il est facile de scraper une page avec des proxys en rotation. Le code suivant est tiré directement de la documentation, où l'on trouve de nombreux autres extraits similaires :
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us"
}
response = requests.request("GET", url, params=params)
print(response.text)
C'est tout le code dont vous avez besoin pour scraper une URL en utilisant des proxys de centre de données situés aux États-Unis. Notez qu'il n'y a pas de liste d'adresses IP à faire tourner, ni même de paramètre pour cela. En effet, l'API change de proxy par défaut. Si vous souhaitez utiliser la même adresse IP pour plusieurs sessions, il suffit d'ajouter un nouveau paramètre :
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us",
"session":"100"
}
response = requests.request("GET", url, params=params)
print(response.text)
Il suffit d'utiliser le même nombre entier pour le paramètre « session » afin d'utiliser la même adresse IP statique pour n'importe quelle URL.